...

-MQ転送 ファイル ファイル-MQ転送 ファイルの転送元/転送先としてMQのキューを指定可能

by user

on
Category: Documents
187

views

Report

Comments

Transcript

-MQ転送 ファイル ファイル-MQ転送 ファイルの転送元/転送先としてMQのキューを指定可能
ファイル-MQ転送
1
ファイル-MQ転送
ファイルの転送元/転送先としてMQのキューを指定可能
1つのファイルを1つまたは複数のMQメッセージに分割してキューに転送できる
キュー内の1つまたは複数のMQメッセージを1つのファイルに転送できる
従来からのファイル転送と同様の仕組みで転送を実施
fteCreateTransferコマンドで転送開始
„オプションで転送先/転送元のキューやファイル分割条件(固定長/区切り文字など)等を指定
エージェント間は内部的にMQメッセージとして転送
転送ログ、転送状況ログが出力され、調整キューマネージャー経由で転送状況/成否を確認できる
入力
ファイル
FTE
エージェントA
FTE
エージェントB
出力
ファイル
2
MQキュー
ファイル-MQ転送
転送元/転送先としてキューを使用するためには、下記設定が必要
デフォルト設定ではファイル-MQ転送は不可
転送先/転送元としてキューにアクセスするエージェント側に設定
agent.properties ファイルに下記エントリーを追加
enableQueueInputOutput=true
„設定後、エージェントを再起動して反映
※agent.properties ファイルの配置ディレクトリ
„<FTE構成ディレクトリ>/<調整キューマネージャー名>/agents/<エージェント名>
– Windows版のデフォルトのFTE構成ディレクトリは、 C:¥Documents and Settings¥All Users¥Application Data¥IBM¥WMQFTE¥config
送受信するメッセージのサイズが1MB(1048576 bytes)以上の場合は、下記設定が必要
キューにアクセスするエージェントのagent.properties ファイルに下記エントリーを追加
maxInputOutputMessageLength=<メッセージ長+α> (バイト単位指定)
„設定後、エージェントを再起動して反映
※必要に応じて転送元/転送先キューやキューマネージャー、(エージェントがキューマネージャーとクライアント接
続する場合は)サーバ接続チャネルの最大メッセージ長(MAXMSGL:デフォルト4MB)も変更
3
ファイル-MQ転送
ファイルからキューへの転送
以下のような転送が可能
„1つのファイルを1つのメッセージとして転送
„1つのファイルを複数のメッセージに分割して転送
– 分割の条件は、データ長か区切り文字(テキスト・モードの場合、正規表現指定 / バイナリ・モードの場合、16進数表記指定)
– 複数メッセージに分割した場合、グループ・メッセージとして転送される
„出力メッセージに対し、永続性、メッセージ・プロパティ(※P6参照)の設定有無を指定できる
– ユーザー任意のメッセージ・プロパティを指定することも可
ファイルからキューへの転送に関係するfteCreateTransferコマンドのオプション
オプション
説明
-qa <キュー名>
宛先のキュー名を指定
-qs <メッセージ・サイズ>
ファイルを複数の固定長メッセージに分割して転送する場合のメッセージ・サイズを指定
「長さ+単位(B/K/M)」のフォーマットで指定(例:-qs 256K)
-dqdb <16進数区切り文字>
バイナリー・ファイルを区切り文字で分割する場合の16進数区切り文字を指定(例:x3e)
-dqdt <パターン>
テキスト・ファイルを区切り文字で分割する場合の正規表現を指定
正規表現は、“”(二重引用符)、または()(括弧)で囲む
テキスト・モード(-t text)転送時のみ指定可
-qi
区切り文字で分割する場合にメッセージに区切り文字を組み込むか指定
指定なし(デフォルト)では、組み込まない
-dqp <永続性設定>
宛先キューに書き込むメッセージの永続性を指定
true : パーシステント(デフォルト)/ false : ノンパーシステント / qdef : キュー設定に依存
-qmp <boolean値>
宛先キューに書き込む最初のメッセージにメッセージ・プロパティ(RFH2ヘッダ)を設定するか指定
true : メッセージ・プロパティを設定 / false : 設定しない(デフォルト)
4
ファイル-MQ転送
各転送ケースでのコマンド例
以下の構成を前提に例示
入力
ファイル
Input.dat
転送元
エージェント
AG1
転送先
エージェント
AG2
宛先キュー
OutQ
転送先エージェント
キューマネージャー
AG2QM
入力ファイルを1つのメッセージとして転送するケース
fteCreateTransfer -sa AG1 -da AG2 -dm AG2QM -dq OutQ Input.dat
入力ファイルを2KB単位に分割し、複数メッセージとして転送するケース
fteCreateTransfer -sa AG1 -da AG2 -dm AG2QM -dq OutQ –qs 2K Input.dat
入力ファイルを「,」(カンマ)で区切り、複数メッセージとして転送するケース
fteCreateTransfer -sa AG1 -da AG2 -dm AG2QM -dq OutQ –t text –dqdt “,” Input.dat
上記例でメッセージ・プロパティを設定するケース
fteCreateTransfer -sa AG1 -da AG2 -dm AG2QM -dq OutQ –t text –dqdt “,” –qmp true Input.dat
„設定されるメッセージ・プロパティの例は次ページ参照
5
ファイル-MQ転送
設定されるメッセージ・プロパティ例
„複数メッセージに分割した場合、グループの最初のメッセージにだけ以下のようなメッセージ・プロパティがセットされる
<usr>
<WMQFTEFileIndex>0</WMQFTEFileIndex>
<WMQFTEFileLastModified>1300193119578</WMQFTEFileLastModified>
<WMQFTEFileSize>13</WMQFTEFileSize>
<WMQFTESourceAgent>AG1</WMQFTESourceAgent>
<WMQFTETransferMode>text</WMQFTETransferMode>
<WMQFTEMqmdUser>user1</WMQFTEMqmdUser>
<WMQFTETransferId>414d5120465445312020202020202020324a7f4d20011303</WMQFTETransferId>
<WMQFTEFileName>/Input.dat</WMQFTEFileName>
<WMQFTEDestinationAgent>AG2</WMQFTEDestinationAgent>
</usr>
・・・(以降、メッセージ・データが続く)
補足
„メッセージ・プロパティはMQ
V7から追加されたメッセージにユーザ任意のプロパティを設定できる機能
„プロパティはRFH2ヘッダーの可変長部分に設定される
„MQ
V7 アプリケーションはRFH2ヘッダーを意識することなくプロパティの設定/取得が可能
MQメッセージ
MQMD
RFH2
(固定長)
RFH2
(可変長)
ユーザーデータ
6
ファイル-MQ転送
エラー時の動作
複数メッセージに分割して転送している際に転送元エージェントでエラーが発生した場合
„途中まで転送されたグループ・メッセージの一部はキューに残ったまま(バックアウトされない)
– 複数メッセージを書き込む場合でも同期点処理はしていない
„転送先エージェントは空データのメッセージを最後のグループ・メッセージとして宛先キューに書き込む
– MQMD.MsgFlagsにはLAST_MSG_IN_GROUPがセットされる
„メッセージ・プロパティを付加する設定になっている場合は、エラーを示すプロパティがセットされる
例
– usr.WMQFTEResultCode = 40
– usr.WMQFTESupplement = BFGTR0036I: The transfer failed to complete successfully.
„メッセージを受信するアプリケーションは、空のデータになっていることで転送が途中で失敗したことを検知できる
7
ファイル-MQ転送
キューからファイルへの転送
以下のような転送が可能
„キュー内の1つまたは複数のメッセージを1つのファイルとして転送
„キュー内のグループ・メッセージを1つのファイルとして転送
„キューに入力メッセージがPUTされるまでの待機時間を指定可能
– リソース・モニターを使用して、メッセージの入力をトリガーに転送することも可能
„複数メッセージを1つファイルに書き込む場合、任意の区切り文字をメッセージ・データの間に入れることができる
キューからファイルへの転送に関係するfteCreateTransferコマンドのオプション
オプション
説明
-sq <キュー名>
転送元のキュー名を指定
-sqgi
完全に揃った最初のグループ・メッセージを処理することを指定
※指定しない場合、キュー内の全てのメッセージが宛先ファイルに書き込まれる
-sqdt <テキスト区切り文字>
区切り文字を挿入する場合に、テキスト区切り文字を二重引用符で囲んで指定(テキスト・モード時のみ指定可)
“¥n”で改行を挿入することも可
-sqdb <バイナリ区切り文字>
区切り文字を挿入する場合に、16進数表記の区切り文字を指定(バイナリ・モード時のみ指定可)
00-FFの範囲内の2桁の16進数にxを付けて指定(例:- sqdb x08)
カンマ区切りで複数バイトの指定も可(例:-sqdb x08,xA4)
-sqdp <区切り文字位置>
区切り文字の位置を指定
prefix : データの前に付加 / postfix : データの後ろに付加
-sqwt <待機時間>
入力メッセージの到着を待つ時間を秒単位で指定
8
ファイル-MQ転送
各転送ケースでのコマンド例
以下の構成を前提に例示
転送元エージェント
キューマネージャー
AG1QM
入力キュー
InQ
転送先
エージェント
AG1
転送元
エージェント
AG2
出力
ファイル
Output.dat
入力キュー内のメッセージを1つのファイルに転送するケース
fteCreateTransfer -sa AG1 –sm AG1QM –sq InQ -da AG2 –df Output.dat
„キュー内の全てのメッセージが出力ファイルに書き込まれる
グループ・メッセージを1つのファイルに転送するケース
fteCreateTransfer -sa AG1 –sm AG1QM –sq InQ –sqgi -da AG2 –df Output.dat
„キュー内の完全に揃っている最初のグループのメッセージが転送対象となる
グループ・メッセージを改行区切りの形式で1つのファイルに転送するケース
fteCreateTransfer -sa AG1 –sm AG1QM –sq InQ –sqgi -t text -sqdt "¥n" -sqdp postfix -da AG2 –df Output.dat
9
ファイル-MQ転送
入力キューに以下のメッセージ・プロパティを持つメッセージをPUTすることで転送を中止できる
„usr.UserReturnCode=1
– 指定する値は0以外であればよい
„以下のメッセージ・プロパティに任意の補足情報を設定することも可
(例)usr.UserSupplement="Cancelling transfer - sent wrong data.“
エージェントは上記メッセージを読み込むと転送を中止し、書き込み途中の出力ファイルは消去する
転送対象の複数の入力メッセージを生成するアプリケーションが何らかの理由で動的に(メッセージの入力途
中に)転送を取りやめたい場合に利用可能
10
Fly UP