現在、以下に示すようにJMSListenerがあります。これは、プロパティファイルの値のセレクタを使用します。これは正常に動作します。JMSListener - 動的セレクタ
@JmsListener(destination = "myQueueDest",
selector = MyHeaders.SELECTOR_KEY + " = '${myapp.selector_val}'")
private void consumeData(MyCustomObj mycustomObj) { }
Iは、メモリ内の値ではなく、バネ性と動的セレクタを使用することが今必要としています。 JMSListener(または他のリスナ・メカニック)を使用してActiveMQキューから選択を解除する方法はありますか?
更新:
私の@JMSListener
にIDを割り当て、その後、私のJmsListenerEndpointRegistry
豆から取得することも可能です。リスナーコンテナをIDで取得し、DefaultMessageListenerContainer
にキャストし、setMessageSelector()
に電話してください。まだ動作するかどうかは完全にはわかりませんが
これは、キャッシュレベルがCACHE_SESSION
になるようにDefaultJmsListenerContainerFactory Beanを設定する必要があります。
しかし、これは動作していないようです。リスナーは、メッセージセレクタを設定したものに関係なく、すべてのメッセージを取得します。
新しい消費者をどのように閉じて再作成するのですか? @JmsListenerを使用せずにリスナを完全にプログラムで作成するという例がありますか?ありがとう。 –
春のドキュメントを参照してください。私のSpringの知識は非常に限られています。 – Shashi
setMessageSelectorのjavadocは、実行時に設定できることを示しています。 http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/jms/listener/AbstractMessageListenerContainer.html#setMessageSelector(java.lang.String) –