@Target(value={METHOD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented @Repeatable(value=JmsListeners.class) @MessageMapping public @interface JmsListener
destination()
の JMS メッセージリスナーのターゲットになるメソッドをマークするアノテーション。containerFactory()
は、JMS リスナーコンテナーの構築に使用する JmsListenerContainerFactory
を識別します。設定されていない場合、デフォルトのコンテナーファクトリは、Bean 名が jmsListenerContainerFactory
であると想定されます。ただし、構成を通じて明示的なデフォルトが指定されている場合を除きます。 カスタム DefaultJmsListenerContainerFactory
Bean のセットアップを検討してください。本番環境では、通常、タイムアウトとリカバリ設定を微調整します。最も重要なのは、デフォルトの "AUTO_ACKNOWLEDGE" モードでは信頼性が保証されないため、信頼性が必要な場合にトランザクションセッションを使用することを確認してください。
@JmsListener
アノテーションの処理は、JmsListenerAnnotationBeanPostProcessor
を登録することによって実行されます。これは手動で行うか、<jms:annotation-driven/>
要素または @EnableJms
アノテーションを使用して行うと便利です。
アノテーション付き JMS リスナーメソッドは、MessageMapping
が提供するものと同様の柔軟な署名を持つことができます。
Session
EEMessage
EE またはそのサブクラスの 1 つ Message
@Payload
- 検証のサポートを含む、アノテーション付きメソッド引数 @Header
-JmsHeaders
で定義された標準の JMS ヘッダーを含む、特定のヘッダー値を抽出するためのアノテーション付きメソッド引数 @Headers
- すべてのヘッダーへのアクセスを取得するために Map
にも割り当て可能である必要があるアノテーション付きメソッド引数 MessageHeaders
引数 MessageHeaderAccessor
または JmsMessageHeaderAccessor
アノテーション付きメソッドには、void
以外の戻り値の型が含まれる場合があります。その場合、メソッド呼び出しの結果は、JMS 応答として、受信メッセージの JMSReplyTO
ヘッダーで定義された宛先に送信されます。このヘッダーが設定されていない場合は、@SendTo
をメソッド宣言に追加することにより、デフォルトの宛先を提供できます。
このアノテーションをメタアノテーションとして使用して、属性をオーバーライドしたカスタム合成アノテーションを作成できます。
EnableJms
, JmsListenerAnnotationBeanPostProcessor
, JmsListeners
修飾子と型 | 必須要素と説明 |
---|---|
java.lang.String | destination このリスナーの宛先名。コンテナー全体の DestinationResolver 戦略によって解決されます。 |
修飾子と型 | オプションの要素と説明 |
---|---|
java.lang.String | concurrency リスナーの同時実行制限(ある場合)。 |
java.lang.String | containerFactory このエンドポイントの提供を担当するメッセージリスナーコンテナーの作成に使用する JmsListenerContainerFactory の Bean 名。 |
java.lang.String | id このエンドポイントを管理するコンテナーの一意の識別子。 |
java.lang.String | selector JMS メッセージセレクター式(存在する場合)。 |
java.lang.String | subscription 永続サブスクリプションの名前(ある場合)。 |
public abstract java.lang.String destination
DestinationResolver
戦略によって解決されます。public abstract java.lang.String id
何も指定されていない場合は、自動生成されたものが提供されます。
public abstract java.lang.String containerFactory
JmsListenerContainerFactory
の Bean 名。指定しない場合、デフォルトのコンテナーファクトリが使用されます。
public abstract java.lang.String selector
セレクター式の詳細な定義については、JMS 仕様を参照してください。
public abstract java.lang.String concurrency
同時実行制限は、「下位 - 上位」の文字列にすることができます。たとえば、"5-10" — または単純な上限文字列 — たとえば、"10" の場合、下限は 1 になります。
基礎となるコンテナーがすべての機能をサポートする場合とサポートしない場合があることに注意してください。たとえば、スケーリングできない場合があります。その場合、上限のみが使用されます。