WebSphere MQのメッセージは、ユーザデータが格納されるアプリケーション・データ部分と、メッセージ・ヘッダー(MQMD)部分で構成されています。各データのISIでの扱いは以下の通りです。
WebSphere MQのメッセージの詳細は、WebSphere MQの関連マニュアルを参照してください。
アプリケーション・データ
ISIでWebSphere MQのキューからメッセージを受信する場合、WebSphere MQのメッセージのアプリケーション・データ部分がISIの共通メッセージのペイロードにマッピングされます。
ISIからWebSphere MQのキューへメッセージを送信する場合、ISIの共通メッセージのペイロードがWebSphere MQのメッセージのアプリケーション・データ部分にマッピングされます。
メッセージ・ヘッダー(MQMD)
ISIからWebSphere MQのキューへメッセージを送信する場合、ISIの共通メッセージのヘッダに設定されたMQMD用のデータが、MQメッセージのフィールドにマッピングされます。ISIの共通メッセージのヘッダにMQMD用のデータが設定されていない場合、“表6.6 メッセージ・ヘッダー(MQMD)の設定値”に示す内容でMQMDの値が自動的に設定されます。
ISIがMQキューからメッセージを受信する場合、MQメッセージのMQMDのフィールドがISIの共通メッセージのヘッダに設定されます。
MQMDマッピングの動作
ここでは、MQMDマッピングの動作の詳細について説明します。
ISIの共通メッセージのヘッダとMQMDのフィールドを相互にマッピングする場合、MQMDのフィールドのデータ型に応じて以下のように動作します。ISIの共通メッセージのヘッダとMQMDのフィールドの対応関係については“MQMDのフィールドとISIの共通メッセージヘッダのキーの対応関係”を参照してください。
MQMDの値が基本データ型の場合
MQMDの値が基本データ型の場合、その値は対応するISIの共通メッセージのヘッダにそのままマッピングされます。
同様にISIの共通メッセージのヘッダの値も、対応するMQMDにそのままマッピングされます。
MQMDの値がバイナリ型(byte[])の場合
MQMDの値がバイナリ型(byte[])の場合、その値は指定した文字コード(デフォルトはUTF-8)で文字列型(String)に変換され、ISIの共通メッセージのヘッダにマッピングされます。
逆に、ISIの共通メッセージのヘッダの値は、文字列型(String)から指定した文字コード(デフォルトはUTF-8)を使用してバイナリ型(byte[])に変換され、MQMDにマッピングされます。
MQMDの値がPutDate/PutTimeの場合
MQMDの「PutDate」フィールドおよび「PutTime」フィールドの値は、WebSphere MQのJava用APIで「java.util.GregorianCalendar」の形式で保持しています。このため、MQMDの「PutDate」および「PutTime」の値は、エポック(1970/1/1 0時00分00秒)からの経過時間(ミリ秒)の文字列に変換され、ISIの共通メッセージのヘッダにマッピングされます。
逆に、ISメッセージのヘッダ「com.fujitsu.esi.mqmd.PutDate」の値は、エポックからの経過時間(ミリ秒)を表す文字列から「java.util.GregorianCalendar」の形式に変換され、MQMDにマッピングされます。
ポイント
MQMDの「PutDate」および「PutTime」の値は、WebSphere MQ上1/100秒までしか保持されません。このため、ISIで上記経過時間「1310698800845」を指定した場合、一度MQキューを経由すると1/1000秒の単位が0で置き換えられ「1310698800840」となります。
バイナリ型の値を変換する際の文字コードは、ISIの環境設定ファイル(ESISystemConfig.properties)に設定します。
キー名:com.fujitsu.esi.mqmd.transcharset
指定値:文字コード
設定の詳細については、“ISI 導入ガイド”の“環境のカスタマイズ”を参照してください。
MQMDマッピングが動作するタイミング
ここでは、MQMDマッピングが動作するタイミングについて説明します。
MQからの受信時
WebSphere MQからメッセージを受信したタイミングで、MQMDのフィールドをISIの共通メッセージヘッダにマッピングします。
MQへの送信時(Oneway方式)
ISIからWebSphere MQへOneway方式でメッセージを送信したタイミングで、ISIの共通メッセージヘッダにMQMD用のキーが設定されている場合、設定されている値をMQMDのフィールドにマッピングします。
MQへの送信時(RequestResponse方式の要求メッセージ送信)
ISIからWebSphere MQへRequestResponse方式の要求メッセージを送信したタイミングで、ISIの共通メッセージヘッダにMQMD用のキーが設定されている場合、設定されている値をMQMDのフィールドにマッピングします。
MQへの応答時(RequestResponse方式の応答メッセージ受信)
WebSphere MQからRequestResponse方式の応答メッセージを受信したタイミングで、MQMDのフィールドをISIの共通メッセージヘッダにマッピングします。
MQMDマッピングを実施しないで運用したい場合、以下の2通りの方法があります。
環境設定ファイル(ESISystemConfig.properties)に設定する方法
ISIの環境設定ファイル(ESISystemConfig.properties)に設定する方法です。セットアップしたMQアダプタ全てに反映されます。
キー名:com.fujitsu.esi.mqmd.mapping.compatibility
指定値:true
設定の詳細については、“ISI 導入ガイド”の“環境のカスタマイズ”を参照してください。
MQアダプタ設定ファイルに項目を設定する方法
MQアダプタ設定ファイルに設定する方法です。セットアップしたMQアダプタ毎に反映されます。
設定の詳細については“ISI 導入ガイド”の“MQアダプタ利用時の設定”を参照してください。
MQMDのフィールドとISIの共通メッセージヘッダのキーの対応関係
MQMDのフィールド名とISIの共通メッセージヘッダのキー名の対応関係は以下の通りです。
MQMDフィールド名 | ISIの共通メッセージヘッダ キー名 | 備考 |
---|---|---|
Report | com.fujitsu.esi.mqmd.Report | NULL指定不可(注1) |
MsgType | com.fujitsu.esi.mqmd.MsgType | NULL指定不可(注1) |
Expiry | com.fujitsu.esi.mqmd.Expiry | NULL指定不可(注1) |
Feedback | com.fujitsu.esi.mqmd.Feedback | NULL指定不可(注1) |
Encoding | com.fujitsu.esi.mqmd.Encoding | NULL指定不可(注1) |
CodedCharSetId | com.fujitsu.esi.mqmd.CodedCharSetId | NULL指定不可(注1) |
Format | com.fujitsu.esi.mqmd.Format | |
Priority | com.fujitsu.esi.mqmd.Priority | NULL指定不可(注1) |
Persistence | com.fujitsu.esi.mqmd.Persistence | NULL指定不可(注1) |
MsgId | com.fujitsu.esi.mqmd.MsgId | バイナリ型(注2) |
CorrelId | com.fujitsu.esi.mqmd.CorrelId | バイナリ型(注2) |
BackoutCount | com.fujitsu.esi.mqmd.BackoutCount | ユーザ変更不可(注3) |
ReplyToQ | com.fujitsu.esi.mqmd.ReplyToQ | |
ReplyToQMgr | com.fujitsu.esi.mqmd.ReplyToQMgr | |
UserIdendifier | com.fujitsu.esi.mqmd.UserIdentifier | |
AccountingToken | com.fujitsu.esi.mqmd.AccountingToken | バイナリ型(注2) |
ApplIdentityData | com.fujitsu.esi.mqmd.ApplIdentityData | |
PutApplType | com.fujitsu.esi.mqmd.PutApplType | NULL指定不可(注1) |
PutApplName | com.fujitsu.esi.mqmd.PutApplName | |
PutDate | com.fujitsu.esi.mqmd.PutDate | エポックからの経過時間(ミリ秒)で保持 |
PutTime | ||
ApplOriginData | com.fujitsu.esi.mqmd.ApplOriginData | |
以下は、サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に“バージョン2”が指定された場合に付加されるフィールドです。 | ||
GroupId | com.fujitsu.esi.mqmd.GroupId | バイナリ型(注2) ユーザ変更不可(注3) |
MsgSeqNumber | com.fujitsu.esi.mqmd.MsgSeqNumber | ユーザ変更不可(注3) |
Offset | com.fujitsu.esi.mqmd.Offset | ユーザ変更不可(注3) |
MsgFlags | com.fujitsu.esi.mqmd.MsgFlags | NULL指定不可(注1) |
OriginalLength | com.fujitsu.esi.mqmd.OriginalLength | ユーザ変更不可(注3) |
注1:値としてNULLが指定された場合は、マッピングが実施されず“メッセージ・ヘッダー(MQMD)の設定値”に示す内容が自動的に設定されます。
注2:指定された文字コード(デフォルトはUTF-8)を使用して、文字列型(String)とバイナリ型(byte[])を相互に変換します。
注3:WebSphere MQからのメッセージ受信時にはMQMDの値をISIの共通メッセージヘッダにマッピングしますが、WebSphere MQへのメッセージ送信時にはISIの共通メッセージヘッダの値をMQMDにマッピングできません。
フィールド名 | 設定値 |
---|---|
StrucId | MQMD_STRUC_ID |
Version | サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に指定された内容が設定されます。 詳細については、“ISI Studioヘルプ”を参照してください。 |
Report | MQRO_NONE |
MsgType | MQMT_DATAGRAM |
Expiry | MQEI_UNLIMITED |
Feedback | MQFB_NONE |
Encoding | MQENC_NATIVE |
CodedCharSetId | MQCCSI_Q_MGR |
Format | MQFMT_NONE |
Priority | MQPRI_PRIORITY_AS_Q_DEF |
Persistence | MQPER_PERSISTENCE_AS_Q_DEF |
MsgId | MQMI_NONE |
CorrelId | MQCI_NONE |
BackoutCount | 0 |
ReplyToQ | 空白 |
ReplyToQMgr | 空白 |
UserIdendifier | 空白 |
AccountingToken | MQACT_NONE |
ApplIdentityData | 空白 |
PutApplType | MQAT_NO_CONTEXT |
PutApplName | 空白 |
PutDate | 空白 |
PutTime | 空白 |
ApplOriginData | 空白 |
以下は、サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に“バージョン2”が指定された場合に付加されるフィールドです。 | |
GroupId | MQGI_NONE |
MsgSeqNumber | 1 |
Offset | 0 |
MsgFlags | MQMF_NONE |
OriginalLength | MQOL_UNDEFINED |
各フィールドの詳細は、WebSphere MQの関連マニュアルを参照してください。