アノテーションインターフェース JmsListener


指定された destination() の JMS メッセージリスナーのターゲットになるメソッドをマークするアノテーション。containerFactory() は、JMS リスナーコンテナーの構築に使用する JmsListenerContainerFactory を識別します。設定されていない場合、デフォルトのコンテナーファクトリは、Bean 名が jmsListenerContainerFactory であると想定されます。ただし、構成を通じて明示的なデフォルトが指定されている場合を除きます。

カスタム DefaultJmsListenerContainerFactory Bean の登録を検討してください。運用目的では、通常、タイムアウトと回復設定を微調整します。最も重要なことは、デフォルトの "AUTO_ACKNOWLEDGE" モードでは信頼性が保証されないため、信頼性が必要な場合は必ずトランザクションセッションを使用してください。

@JmsListener アノテーションの処理は、JmsListenerAnnotationBeanPostProcessor を登録することによって実行されます。これは手動で行うか、<jms:annotation-driven/> 要素または @EnableJms アノテーションを使用して行うと便利です。

アノテーション付き JMS リスナーメソッドは、MessageMapping が提供するものと同様の柔軟な署名を持つことができます。

  • JMS セッションへのアクセスを取得する SessionEE
  • 未加工の JMS メッセージにアクセスするための MessageEE またはそのサブクラスの 1 つ
  • Spring のメッセージング抽象化対応を使用する Message
  • @Payload - 検証のサポートを含む、アノテーション付きメソッド引数
  • @Header -JmsHeaders で定義された標準の JMS ヘッダーを含む、特定のヘッダー値を抽出するためのアノテーション付きメソッド引数
  • @Headers - すべてのヘッダーへのアクセスを取得するために MapSE にも割り当て可能でなければならないアノテーション付きメソッド引数
  • すべてのヘッダーへのアクセスを取得するための MessageHeaders 引数
  • すべてのメソッド引数に簡単にアクセスできる MessageHeaderAccessor または JmsMessageHeaderAccessor

アノテーション付きメソッドには、void 以外の戻り値の型が含まれる場合があります。その場合、メソッド呼び出しの結果は、JMS 応答として、受信メッセージの JMSReplyTO ヘッダーで定義された宛先に送信されます。このヘッダーが設定されていない場合は、@SendTo をメソッド宣言に追加することにより、デフォルトの宛先を提供できます。

このアノテーションは、繰り返し可能なSEアノテーションとして使用できます。

このアノテーションをメタアノテーションとして使用して、属性をオーバーライドしたカスタム合成アノテーションを作成できます。

導入:
4.1
作成者:
Stephane Nicoll, Sam Brannen
関連事項:
  • 必須定数のサマリー

    必須要素
    修飾子と型
    必須要素
    説明
    このリスナーの宛先名。コンテナー全体の DestinationResolver 戦略によって解決されます。
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    リスナーの同時実行制限(ある場合)。
    このエンドポイントの提供を担当するメッセージリスナーコンテナーの作成に使用する JmsListenerContainerFactory の Bean 名。
    このエンドポイントを管理するコンテナーの一意の識別子。
    JMS メッセージセレクター式(存在する場合)。
    永続サブスクリプションの名前(ある場合)。
  • 要素の詳細

    • destination

      StringSE destination
      このリスナーの宛先名。コンテナー全体の DestinationResolver 戦略によって解決されます。
    • id

      このエンドポイントを管理するコンテナーの一意の識別子。

      何も指定されていない場合は、自動生成されたものが提供されます。

      関連事項:
      デフォルト:
      ""
    • containerFactory

      StringSE containerFactory
      このエンドポイントの提供を担当するメッセージリスナーコンテナーの作成に使用する JmsListenerContainerFactory の Bean 名。

      指定しない場合、デフォルトのコンテナーファクトリが使用されます。

      デフォルト:
      ""
    • subscription

      StringSE subscription
      永続サブスクリプションの名前(ある場合)。

      Spring Framework 5.3.26 の時点で、明示的なサブスクリプション名が指定されていない場合、アノテーション付きリスナーメソッドの完全修飾名に基づいてデフォルトのサブスクリプション名が生成されます。— たとえば、org.example.jms.ProductListener クラスの processRequest(...) リスナーメソッドの場合は "org.example.jms.ProductListener.processRequest" です。

      デフォルト:
      ""
    • selector

      StringSE selector
      JMS メッセージセレクター式(存在する場合)。

      セレクター式の詳細な定義については、JMS 仕様を参照してください。

      デフォルト:
      ""
    • concurrency

      StringSE concurrency
      リスナーの同時実行制限(ある場合)。リスナーコンテナーの作成に使用されるコンテナーファクトリによって定義された値をオーバーライドします。

      同時実行制限は、「下位 - 上位」の文字列にすることができます。たとえば、"5-10" — または単純な上限文字列 — たとえば、"10" の場合、下限は 1 になります。

      基礎となるコンテナーがすべての機能をサポートする場合とサポートしない場合があることに注意してください。たとえば、スケーリングできない場合があります。その場合、上限のみが使用されます。

      デフォルト:
      ""