目的地に適切に設定された@Bean
(必要なプロパティが設定されたMQQueue
)を追加します。
DefaultJmsListenerContainerFactory
は、BeanFactoryDestinationResolver
をdestinationResolver
プロパティに使用するように設定します。
リゾルバも@Bean
である必要があります。したがって、Beanファクトリへの参照を取得します。
次に、${queues.input}
はキューのBean名に解決され、リスナーコンテナはデフォルト宛先リゾルバではなくその宛先を使用します。宛先リゾルバはSession
から宛先を作成します。
EDIT
だけ明確にする...注釈の
destination
プロパティは、実際に設定さDestinationResolver
を使用してDestination
オブジェクトに解決さ宛先名です。
デフォルトのリゾルバ(DynamicDestinationResolver
)は、単にsession.createQueue()
またはsession.createTopic()
を呼び出します。したがって、JMSプロバイダのクライアントライブラリが提供するデフォルトの宛先を取得できます。
BeanFactoryDestinationResolver
では、完全に構成された宛先オブジェクトであり、プロバイダのライブラリに合わせたアプリケーションコンテキストで、宛先名をBeanに解決します。
したがって、BFリゾルバを直接(試してみて)、またはコンテナファクトリ経由で使用するようにDMLCを設定するだけで、それぞれ@JmsListener
のDMLCを作成し、それぞれにリゾルバを渡します。したがって、宛先名は完全に設定されたDestination
インスタンスに解決されます。
私はIBM MQで動作しますが、Springではあまり役に立ちません。このポストは参考になるかもしれませんが、JmsListenerを使用していません。 http://forum.spring.io/forum/spring-projects/integration/jms/97168-how-to-set-wmqconstants-wmq-mqmd-read-enabled-in-spring – JoshMc
@JoshMcリンクをありがとう。はい、私はそれも読んでいます。私はちょうどフィールドを設定するキューオブジェクトを取得する必要があります。私はちょうど春にどのように知りません。おそらく注釈では不可能かもしれません。ありがとうございます。 – sarahTheButterFly