Fuse ESB (7.1.0) 内に組み込みの activemq ブローカーを使用し、コンシューマーを同じ場所に配置しています。
プロデューサー クライアントは、リモートの GlassFish サーバーにデプロイされます。spring jms テンプレートとともに activeMQ リソース アダプター (5.6.0) を使用します。クライアントはメッセージをさまざまなキューに発行します。一部のメッセージ (特定のキューに送られる) で jms.useAsyncSend=true を使用する必要がありますが、他のメッセージではデフォルトを使用する必要があります。以下のオプションが表示されます
1) オプション 'jms.useAsyncSend=true' をリソース アダプタ URL に追加できません。
2) 接続ファクトリーの JNDI ルックアップは、「org.apache.activemq.ra.ActiveMQConnectionFactory」のインスタンスを返しています。実際には、対応する jmsTemplate に setUseAsyncSend() を使用できる org.apache.activemq.ActiveMQConnectionFactory のインスタンスを期待していました。したがって、このオプションも使用できません。
3) GlassFish コネクタの下に複数の接続ファクトリを構成しています (キューごとに 1 つ)。プロパティ 'jms.useAsyncSend=true' を追加のプロパティとして特定の接続ファクトリに渡そうとしています。これは、その特定の接続プールで作成された接続に対してのみ使用されることを期待しています。さて、これを行ったので、本当に機能したかどうかを確認したいと思います。
質問 1) プロパティ 'useAsyncSend' が受信メッセージに設定されているかどうかをコンシューマー側で確認する方法はありますか? これは、プロデューサー側で行ったことが実際に機能していることを確認するためです。メッセージをエンド コンシューマーにルーティングするために camel-context を使用していることに注意してください。来たコンテキスト内でこれを確認する方法はありますか? これに対応するヘッダーまたはそのようなものはありますか?
質問 2) 「useAsyncSend」の異なる値を持つ異なるキューにメッセージを送信するために 1 つのリソース アダプタが使用されるプロデューサー側で「useAsyncSend」を設定するより良い方法はありますか。
「useAsyncSend」は activeMQ 固有の構成であるため、jmstemplate インターフェイスでは使用できないことを理解しています
これに関する助けに感謝します。
ありがとう