2016-11-24 23 views
0

Springは、特定のキューからメッセージを聴くために@JMSListener注釈を提供します。 implement JmsListenerConfigurerの代わりにMessageListenerを登録することもできます。Spring JMSがリクエスト時にjmsキューをリッスン開始します。

どちらの場合も、アプリケーションの起動時に、コードのハードコーディングまたはプロパティを使用して、キューの名前を知る必要があります。

起動後、アプリケーションの名前がわかっているキューを待ち受ける方法はありますか?

答えて

1

これは動作するはずです。

  1. @JmsListenerにダミーキュー名とidを設定します。
  2. autoStartupとfalseに設定します。
  3. 準備ができたら、JmsListenerEndpointRegistryid(アプリケーションにレジストリを自動配線し、getListenerContainer(id)と呼んでください)のリスナーコンテナへの参照を取得します。
  4. AbstractMessageListenerContainerにコンテナをキャストし、希望のキューでsetDestinationName(またはsetDestination)を呼び出します。
  5. start()それです。
+1

多くのコンテナを動的に作成したい場合は、プログラムでコンテナを作成し、 'afterPropertiesSet()'、 'start()'を呼び出してください。 –

+0

ありがとう!私はこれを試して更新します。リクエスト・キュー・リスナーが複数ある場合に備えて、リスナー・オブジェクトと比較してコンテナの重さを知ることはできますか? – Sundeep

+0

私はあなたが何を意味するか分かりません。各 '@ JmsListener'は、ファクトリによって作成された' DefaultMessageListenerContainer'で動作します。これは、プログラムでコンテナを作成し、POJOリスナを 'MessageListenerAdapter'にラップすることと事実上同じです。 –

関連する問題