IBM MQ キュー、トピック、および宛先との間での宛先のマッピング
サービス統合メッセージと IBM MQ メッセージには、いずれもヘッダー・フィールドおよびプロパティーが含まれています。これらのヘッダー・フィールドおよびプロパティーのあるものには、送信先 (send-to) および応答先 (reply-to) 宛先に関する、また転送ルーティング・パスと逆ルーティング・パスのバス中の宛先に関する情報を提供する、宛先または宛先プロパティーが含まれています。サービス統合および IBM MQ は、宛先について異なった定義を持っているので、サービス統合フォーマットと IBM MQ フォーマット間でメッセージが変換される場合に、宛先および宛先プロパティーを処理するためにマッピングが使用されます。
IBM MQ フォーマット・メッセージの宛先および宛先プロパティー
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
これらのフィールドは、MQXQH (IBM MQ 伝送キュー・ヘッダー) にあります。MQXQH がメッセージに付加されるのは、メッセージが IBM MQ キュー・マネージャー間を、または IBM MQ キュー・マネージャーとサービス統合バス間を WebSphere® MQ リンクを介して移動する期間中に限られます。送信側および受信側のアプリケーションは、これらのフィールドにアクセスすることはできません。
RemoteQName フィールドには、送信先 (send-to) キュー (IBM MQ) または送信先 (send-to) 宛先 (サービス統合) の名前が含まれます。RemoteQMgrName フィールドは送信先 (send-to) キューや宛先が置かれている、キュー・マネージャーやキュー共有グループ (IBM MQ) またはサービス統合バス (サービス統合) を識別します。通常、RemoteQMgrName フィールドにはリモート・キュー・マネージャー、キュー共有グループ、またはサービス統合バスの名前が含まれていますが、IBM MQ キュー・マネージャーの別名またはサービス統合仮想キュー・マネージャー名が含まれることもあります。これらのフィールドがトピックには使用されないことに注意してください。
RemoteQName および RemoteQMgrName の値は最大 48 文字までの長さで、IBM MQ の命名上の制約に従っている必要があります。
- MQRFH2 jms.Dst (JMSDestination)
このフィールドは、MQRFH2 ヘッダーを含む IBM MQ フォーマットの JMS メッセージにあります。
jms.Dst フィールドには、アプリケーションがメッセージの send を発行したときに設定された送信先 (send-to) JMS 宛先の、シリアライズされた表現 (IBM MQ URI) が含まれています。JMS 宛先用の IBM MQ URI フォーマットについて詳しくは、IBM MQ ライブラリーを参照してください。
サービス統合が転送ルーティング・パスを持つメッセージを IBM MQ に送信するときには、この URI に ibmRoutingPath 属性が追加されます。ibmRoutingPath 値はサービス統合メッセージからの転送ルーティング・パスを識別します。IBM MQ は転送ルーティング・パスを使用しませんが、転送ルーティング・パスを使用できるリモート・サービス統合バス中には送信先 (send-to) 宛先がある場合があります。
- MQMD ReplyToQ
- MQMD ReplyToQMgr
これらのフィールドは、すべて IBM MQ フォーマット・メッセージ中にあります。
送信側アプリケーションが応答先 (reply-to) キューを指定する場合、ReplyToQ フィールドには応答先 (reply-to) キュー (IBM MQ) または応答先 (reply-to) 宛先 (サービス統合) の名前が含まれ、ReplyToQMgr フィールドはそのキューが置かれているキュー・マネージャーやキュー共有グループ (IBM MQ) またはサービス統合バス (サービス統合) を識別します。通常、ReplyToQMgr フィールドにはキュー・マネージャー、キュー共有グループ、またはサービス統合バスの名前が含まれていますが、IBM MQ キュー・マネージャーの別名またはサービス統合仮想キュー・マネージャー名が含まれることもあります。送信側アプリケーションが応答先 (reply-to) トピックを指定する場合、または応答先 (reply-to) 宛先を指定しない場合、これらのフィールドにはヌル値が含まれます。
ReplyToQ および ReplyToQMgr の値は最大 48 文字までの長さで、IBM MQ 命名上の制約に従っている必要があります。
- MQRFH2 jms.Rto (JMSReplyTo)
このフィールドは、MQRFH2 ヘッダーを含み、かつ応答先 (reply-to) 宛先を指定している IBM MQ フォーマットの JMS メッセージにあります。IBM MQ JMS アプリケーションは、応答メッセージの宛先として通常このメッセージ属性を使用しますが、他の (非 JMS) IBM MQ アプリケーションは通常それを使用しないで、代わりに MQMD 応答先 (reply-to) フィールドを使用します。
jms.Rto フィールドには、送信側 JMS アプリケーションによって設定された応答先 (reply-to) JMS 宛先の、シリアライズされた表現 (IBM MQ URI) が含まれています。JMS 宛先用の IBM MQ URI フォーマットについて詳しくは、IBM MQ ライブラリーを参照してください。
サービス統合が逆ルーティング・パスを持つメッセージを IBM MQ に送信するときには、サービス統合がこの URI に ibmRoutingPath 属性を追加します。ibmRoutingPath 値はサービス統合メッセージからの逆ルーティング・パスを識別します。受信側 JMS アプリケーションが応答を送信する際に、IBM MQ は応答先 (reply-to) URI からのルーティング・パス情報を応答メッセージの送信先 (send-to) URI に含め、サービス統合が応答メッセージをルーティングするためにその情報を使用できるようにします。
- 送信側アプリケーションがメッセージの応答先 (reply-to) キューを指定する場合、通常そのキューは、送信側アプリケーションが接続しているバス、キュー・マネージャー、またはキュー共有グループに置かれています。 これによって、送信側アプリケーションは応答先 (reply-to) キューからの応答メッセージを受信することができるようになります。メッセージを IBM MQ に、または IBM MQ を介して送信するサービス統合アプリケーションは、異なったバス、キュー・マネージャー、またはキュー共有グループに応答先 (reply-to) キューを指定してはなりません。
- メッセージ中の応答先 (reply-to) 宛先を使用するのは、受信側アプリケーションであることを理解するのは重要です。受信側アプリケーションが接続するバス、キュー・マネージャー、またはキュー共有グループは、応答先 (reply-to) 宛先へのルーティングを可能にする情報によって構成される必要があります。
サービス統合がメッセージを IBM MQ フォーマットに変換する際の宛先変換
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
これらのフィールドは、サービス統合が IBM MQ リンク を介してメッセージを送信する際にのみ、そして宛先がキューである場合にのみ適用されます。
サービス統合はこれらのフィールドを、メッセージに対する解決済みの送信先 (send-to) 宛先に基づいて設定します。すなわち、送信先 (send-to) 宛先が別名の場合、サービス統合はターゲット・バスおよびターゲット ID を使用します。それで、処理は次のようになります。- 送信先 (send-to) 宛先が間接接続バスの場合、宛先名 (ID) は RemoteQName として、バス名は RemoteQMgrName として保管されます。
- 送信先 (send-to) 宛先が直接接続バスで、宛先名 (ID) が queue@queueManager という形式である場合、キュー名 (queue) は RemoteQName として、そしてキュー・マネージャー名 (queueManager) は RemoteQMgrName として保管されます。
- 送信先 (send-to) 宛先が直接接続バスで、宛先名 (ID) が queue@queueManager という形式でない場合、宛先名は RemoteQName として、そしてバス名は RemoteQMgrName として保管されます。
送信先 (send-to) 宛先が間接接続サービス統合バス中にあって、その宛先名が IBM MQ 命名上の制約に準拠していない場合、準拠した名前を持つ別名宛先を定義する必要があります。送信側アプリケーションは準拠した (別名) 名前を使用する必要があります。この場合、ローカル・バス中ではなく、リモート (間接接続) バス中で別名宛先を定義する必要があります。
送信先 (send-to) 宛先が間接接続サービス統合バス中にあって、そのバス名が IBM MQ 命名上の制約に準拠していない場合、その間接接続バスの仮想キュー・マネージャー名が必要になります。この場合、ローカル・バスはバス名ではなく仮想キュー・マネージャー名を指定して、間接接続バスを定義することが必要となります。
IBM MQ 命名上の制約と準拠していないサービス統合バス名のマッピングについて詳しくは、バス宛先および IBM MQ キューのアドレス指定の方法を参照してください。
- MQRFH2 jms.Dst (JMSDestination)
IBM MQ フォーマット・メッセージが MQRFH2 ヘッダーを含んでいる場合、サービス統合は JMSDestination ヘッダー・フィールドを IBM MQ URI にシリアライズし、それを IBM MQ メッセージの JMSDestination フィールドに保管します。メッセージが転送ルーティング・パスを持っている場合、サービス統合はそれを ibmRoutingPath 属性として URI に含めます。
- MQMD ReplyToQ
- MQMD ReplyToQMgr
送信側 JMS アプリケーションは、プロバイダー固有の JMS メッセージ・プロパティー JMS_IBM_MQMD_ReplyToQ および JMS_IBM_MQMD_ReplyToQMgr を使用して、これらのフィールドを直接設定できます。 送信側アプリケーションがそのようにしない場合、メッセージに応答先 (reply-to) 宛先があって、その宛先がキューであれば (その場合にのみ)、サービス統合がプロパティーを設定します。
サービス統合はこれらのフィールドを、メッセージに対する未解決の応答先 (reply-to) 宛先に基づいて設定します。すなわち、応答先 (reply-to) 宛先が別名の場合、サービス統合はターゲット・バスおよび ID ではなく、別名バスおよび ID を使用します。サービス統合アプリケーションが、外部宛先や @ 文字を含む名前を持つ応答先 (reply-to) 宛先を提供することはありません。アプリケーションがこれを行わない場合の処理は次のとおりです。- 応答先 (reply-to) 宛先名 (ID) は ReplyToQ フィールドに、そして応答先 (reply-to) 宛先バス名 (すなわち、ローカル・バス名) は ReplyToQMgr フィールドに保管されます。
- 仮想キュー・マネージャー名がローカル・バス名と異なる場合、仮想キュー・マネージャー名がローカル・バス名の代わりに ReplyToQMgr フィールドに保管されます。
応答先 (reply-to) 宛先の実名が IBM MQ 命名上の制約に準拠していない場合は (名前に @ 文字が使用されている場合を含む)、準拠した名前を持つ別名宛先を定義する必要があります。送信側アプリケーションは、準拠した名前 (別名) を使用する必要があります。この場合、リモート (間接接続) バス中ではなく、ローカル・バス中で別名宛先を定義する必要があります。
- MQRFH2 jms.Rto (JMSReplyTo)
メッセージが応答先 (reply-to) 宛先を持ち、IBM MQ フォーマット・メッセージが MQRFH2 ヘッダーを含んでいる場合、サービス統合はその応答先 (reply-to) 宛先を表すために IBM MQ URI を構成し、その URI を IBM MQ メッセージの JMSReplyTo プロパティーに保管します。 応答先 (reply-to) 宛先がキューの場合、その URI には応答先 (reply-to) 宛先バス名 (ローカル・バス) または仮想キュー・マネージャー名 (それが異なる場合) が含まれます。メッセージが逆ルーティング・パスを持っている場合、サービス統合はそのパスを URI の ibmRoutingPath 属性に含めます。
サービス統合がメッセージを IBM MQ フォーマットから変換する際の宛先変換
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
これらのフィールドは、サービス統合が IBM MQ リンクを介してメッセージを受信する際にのみ、そして宛先がキューである場合にのみ適用されます。
サービス統合は、RemoteQName フィールドをメッセージの宛先 ID (常にキュー) として解釈し、RemoteQMgrName フィールドをメッセージの宛先バスの名前として解釈します。 RemoteQMgrName フィールドにローカル・バスの仮想キュー・マネージャー名が含まれている場合、サービス統合は、そのフィールドをローカル・バスの名前として解釈します。 サービス統合は、その結果であるバスと宛先 ID の組み合わせ (それはローカル・バスの別名宛先の場合もある) を使用して通常の方法でメッセージを配信します。宛先バスが外部バスである場合は、そのメッセージを外部バスに転送することが含まれます。
- MQRFH2 jms.Dst (JMSDestination)
このフィールドが使用可能な場合、サービス統合はそれを使用してメッセージの JMSDestination ヘッダー・フィールドを作成します。URI が ibmRoutingPath 属性を含む場合、サービス統合はそれを使用してメッセージの転送ルーティング・パスを作成します。
このプロパティーが利用できない場合 (例えば、IBM MQ メッセージに MQRFH2 ヘッダーがない場合)、サービス統合はメッセージが配信されるサービス統合宛先から JMSDestination ヘッダー・フィールドを作成することができます。
- MQMD ReplyToQ
- MQMD ReplyToQMgr
- これらのフィールドにヌル以外の値が含まれている場合、サービス統合はそれらを使用して、サービス統合メッセージ用の逆ルーティング・パスの最初のエレメントを、次のように構成します。
- ReplyToQMgr がローカル・バス名または仮想キュー・マネージャー名の場合、サービス統合はバスをローカル・バスに、宛先名 (ID) を ReplyToQ に設定します。
- ReplyToQMgr がローカル・バス中で定義されている外部バスの場合、サービス統合はバスを ReplyToQMgr に、宛先名 (ID) を ReplyToQ に設定します。
- ReplyToQMgr がローカル・バス中で定義されているローカル・バス名、仮想キュー・マネージャー名、または外部バスでない場合、サービス統合はバスを直接接続されている IBM MQ バスに、宛先名 (ID) を queue@queueManager (ここで、queue は ReplyToQ で、queueManager は ReplyToQMgr) に設定します。
- MQRFH2 jms.Rto (JMSReplyTo)
このフィールドが使用可能な場合、サービス統合は MQMD ReplyToQ および ReplyToQMgr フィールドと共にそれを使用して、サービス統合メッセージ用の逆ルーティング・パスおよび JMSReplyTo ヘッダー・フィールドを構成します。逆ルーティング・パスは、最初のエレメント (MQMD ReplyToQ および ReplyToQMgr フィールドから構成する) および IBM MQ メッセージの JMSReplyTo URI の ibmRoutingPath 属性から入手した残りのエレメント (もしあれば) から構成されます。JMSReplyTo ヘッダー・フィールドは、IBM MQ メッセージの JMSReplyTo URI の宛先属性と共に、逆ルーティング・パスの最初のエレメントから構成されます。