MQ では、既存のキュー マネージャーのインスタンスがある場合、アプリがアクセスできる queuemanager1 とします。queuemanager1 を介して別のキュー マネージャー queuemanager2 のキューを指すキューを作成することにより、メッセージを送信できます。これが行われるのは、アプリは queuemanager2 に直接アクセスできない可能性がありますが、queumanager1 をホストする MQ サーバーはアクセスできるためです。
コードは次のようになります。
MQQueue destQueue = queuemanager1.accessQueue("queFromAnotherMngr",CMQC.MQOO_OUTPUT | CMQC.MQOO_FAIL_IF_QUIESCING,"queuemanager2", null, null);
JBoss AS 6 用の IBM MQ JCA アダプターを使用するようにコードをリファクタリングしています。そのため、接続を JBoss で管理するには、通常の JMS API (InitialContext JNDI ルックアップ、プロデューサーなどを使用) に固執する必要があると考えています。
しかし、通常の JMS で、受信側の MQ サーバーがメッセージを別のキューマネージャー (queuemanager2) の別のキューに転送できるようにする方法がわかりません。
これまで調べたところ、MQ に送信されるオブジェクトには Message Queueing Message Descriptor (MQMD) と呼ばれるものがあり、「ReplyToQMgr」と「ReplyToQ」というフィールドがあります。JCA アダプターで JMS API を使用してこれらのフィールドを更新する方法を見つけたら、解決策があると思います。何かご意見は?アイデア?提案?ソリューション?ありがとう!