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