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


指定された queues() (または bindings() ) の Rabbit メッセージリスナーのターゲットになるメソッドをマークするアノテーション。containerFactory() は、rabbit リスナーコンテナーの構築に使用する RabbitListenerContainerFactory を識別します。設定されていない場合、設定によって明示的なデフォルトが提供されていない限り、デフォルトのコンテナーファクトリは rabbitListenerContainerFactory の Bean 名で使用可能であると見なされます。

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

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

  • チャネルへのアクセスを取得するための Channel 
  • 生の AMQP メッセージにアクセスするための Message またはサブクラスの場合
  • Message は、メッセージングの抽象化に対応するものを使用します
  • @Payload - 検証のサポートを含むアノテーション付きメソッド引数
  • @Header -AmqpHeaders で定義された標準 AMQP ヘッダーを含む、特定のヘッダー値を抽出するためのアノテーション付きメソッド引数
  • @Headers - すべてのヘッダーにアクセスするために MapSE にも割り当て可能でなければならないアノテーション付き引数。
  • すべてのヘッダーにアクセスするための MessageHeaders 引数。
  • すべてのメソッド引数への便利なアクセスのための MessageHeaderAccessor または AmqpMessageHeaderAccessor

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

bindings() が提供され、アプリケーションコンテキストに RabbitAdmin が含まれている場合、キュー、交換、バインディングが自動的に宣言されます。

メソッドレベルで定義すると、メソッドごとにリスナーコンテナーが作成されます。MessageListenerMessagingMessageListenerAdapter であり、MethodRabbitListenerEndpoint で構成されています。

クラスレベルで定義されている場合、単一のメッセージリスナーコンテナーを使用して、@RabbitHandler アノテーションが付けられたすべてのメソッドにサービスを提供します。このようなアノテーション付きメソッドのメソッドシグネチャーは、特定の受信メッセージに対して単一のメソッドを解決できるようなあいまいさを引き起こしてはなりません。MessagingMessageListenerAdapterMultiMethodRabbitListenerEndpoint で構成されます。

導入:
1.4
作成者:
Stephane Nicoll, Gary Russell
関連事項:
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    コンテナーファクトリの AcknowledgeMode プロパティをオーバーライドします。
    AmqpAdmin への参照。
    コンテナーファクトリのデフォルト設定を上書きするには、true または false に設定します。
    コンテナーファクトリの batchListener プロパティをオーバーライドします。
    交換およびオプションのバインディング情報とともに、リスナーのキュー名を提供する QueueBinding の配列。
    このリスナーのリスナーコンテナーの同時実行数を設定します。
    このエンドポイントのサービスを担当するメッセージリスナーコンテナーを作成するために使用する RabbitListenerContainerFactory の Bean 名。
    メッセージコンバーターによって設定されたコンテンツ型 ヘッダーを "replyContentType" プロパティの値でオーバーライドするには、"false" に設定します。
    リスナーメソッドが例外をスローした場合に呼び出す RabbitListenerErrorHandler を設定します。
    boolean
    true の場合、コンテナー内の単一のコンシューマーが queues() を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。
    このリスナーのコンテナーに使用するタスクエグゼキューター Bean 名を設定します。コンテナーファクトリに設定されたエグゼキュータをオーバーライドします。
    提供されている場合、このリスナーのリスナーコンテナーは、この値を名前として Collection<MessageListenerContainer> 型の Bean に追加されます。
    このエンドポイントを管理するコンテナーの一意の識別子。
    このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。
    このエンドポイントの優先度。
    このリスナーのキュー。
    このリスナーのキュー。
    返信メッセージのコンテンツ型を設定するために使用されます。
    送信前にレスポンスを後処理する ReplyPostProcessor の Bean 名。
    "true" に設定すると、リスナーによってスローされた例外が、通常の replyTo/@SendTo セマンティクスを使用して送信者に送信されます。
  • 要素の詳細

    • id

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

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

      戻り値:
      このエンドポイントを管理するコンテナーの id
      関連事項:
      デフォルト:
      ""
    • containerFactory

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

      指定しない場合、デフォルトのコンテナーファクトリが使用されます(存在する場合)。SpEL 式が提供されている場合(#{...})、式はコンテナーファクトリインスタンスまたは Bean 名のいずれかに評価できます。

      戻り値:
      RabbitListenerContainerFactory Bean 名。
      デフォルト:
      ""
    • queues

      StringSE[] queues
      このリスナーのキュー。エントリは、'queue name'、'property-placeholder keys'、または 'expressions' です。式は、キュー名または Queue オブジェクトに解決する必要があります。キューが存在するか、アプリケーションコンテキストで RabbitAdmin を持つ Bean として別の場所で定義されている必要があります。bindings() および queuesToDeclare() とは相互に排他的です。
      戻り値:
      ターゲットからリッスンするキュー名または式 (SpEL)
      関連事項:
      デフォルト:
      {}
    • queuesToDeclare

      Queue[] queuesToDeclare
      このリスナーのキュー。アプリケーションコンテキストに RabbitAdmin がある場合、キューはブローカでデフォルトバインディングで宣言されます (ルーティングキーとしてキュー名を使用したデフォルト交換)。bindings() および queues() とは相互に排他的です。注: ブローカー名のキューは、この方法で宣言することはできません。Bean として定義する必要があります (名前に空の文字列を使用)。
      戻り値:
      宣言するキュー。
      導入:
      2.0
      関連事項:
      デフォルト:
      {}
    • exclusive

      boolean exclusive
      true の場合、コンテナー内の単一のコンシューマーが queues() を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。true の場合、1 の並行性が必要です。デフォルトは false です。
      戻り値:
      exclusive ブール値フラグ。
      デフォルト:
      false
    • priority

      StringSE priority
      このエンドポイントの優先度。RabbitMQ 3.2 以上が必要です。デフォルトではコンテナーの優先度を変更しません。数値が大きいほど優先度が高く、正と負の両方の数値を使用できます。
      戻り値:
      エンドポイントの優先度。
      デフォルト:
      ""
    • admin

      StringSE admin
      AmqpAdmin への参照。リスナーが自動削除キューを使用しており、それらのキューが条件付き宣言用に構成されている場合は必須です。これは、コンテナーが (再) 開始されたときにこれらのキューを (再) 宣言する管理者です。詳細については、リファレンスドキュメントを参照してください。SpEL 式が指定されている場合 (#{...})、式は AmqpAdmin インスタンスまたは Bean 名に評価できます。
      戻り値:
      AmqpAdmin Bean 名。
      デフォルト:
      ""
    • bindings

      QueueBinding[] bindings
      交換およびオプションのバインディング情報とともに、リスナーのキュー名を提供する QueueBinding の配列。queues() および queuesToDeclare() とは相互に排他的です。注: ブローカー名のキューは、この方法で宣言することはできません。Bean として定義する必要があります (名前に空の文字列を使用)。
      戻り値:
      バインディング。
      導入:
      1.5
      関連事項:
      デフォルト:
      {}
    • group

      StringSE group
      提供されている場合、このリスナーのリスナーコンテナーは、この値を名前として Collection<MessageListenerContainer> 型の Bean に追加されます。これにより、たとえば、コレクションを反復処理して、コンテナーのサブセットを開始 / 停止できます。
      戻り値:
      グループの Bean 名。
      導入:
      1.5
      デフォルト:
      ""
    • returnExceptions

      StringSE returnExceptions
      "true" に設定すると、リスナーによってスローされた例外が、通常の replyTo/@SendTo セマンティクスを使用して送信者に送信されます。false の場合、リスナーコンテナーに例外がスローされ、通常の再試行 /DLQ 処理が実行されます。
      戻り値:
      例外を返す場合は true。クライアント側が RemoteInvocationAwareMessageConverterAdapter を使用する場合、例外が再スローされます。それ以外の場合、送信者は例外をラップする RemoteInvocationResult を受け取ります。
      導入:
      2.0
      デフォルト:
      ""
    • errorHandler

      StringSE errorHandler
      リスナーメソッドが例外をスローした場合に呼び出す RabbitListenerErrorHandler を設定します。Bean 名を表す単純な文字列。Spel 式 (#{...}) が指定されている場合、式は Bean 名または RabbitListenerErrorHandler インスタンスに評価される必要があります。
      戻り値:
      エラーハンドラー。
      導入:
      2.0
      デフォルト:
      ""
    • concurrency

      StringSE concurrency
      このリスナーのリスナーコンテナーの同時実行数を設定します。リスナーコンテナーファクトリによって設定されたデフォルトをオーバーライドします。コンテナー型の同時実行設定にマップします。

      SimpleMessageListenerContainer の場合、この値が単純な整数の場合、concurrentConsumers プロパティに固定数のコンシューマーが設定されます。"m-n" という形式の文字列の場合、concurrentConsumers は m に設定され、maxConcurrentConsumers は n に設定されます。

      DirectMessageListenerContainer の場合、consumersPerQueue プロパティを設定します。

      戻り値:
      並行性。
      導入:
      2.0
      デフォルト:
      ""
    • autoStartup

      StringSE autoStartup
      コンテナーファクトリのデフォルト設定を上書きするには、true または false に設定します。
      戻り値:
      自動起動の場合は true、自動起動しない場合は false。
      導入:
      2.0
      デフォルト:
      ""
    • executor

      StringSE executor
      このリスナーのコンテナーに使用するタスクエグゼキューター Bean 名を設定します。コンテナーファクトリに設定されたエグゼキュータをオーバーライドします。SpEL 式が指定されている場合 (#{...})、式はエグゼキューターインスタンスまたは Bean 名のいずれかに評価されます。
      戻り値:
      エグゼキュータ Bean 名。
      導入:
      2.2
      デフォルト:
      ""
    • ackMode

      StringSE ackMode
      コンテナーファクトリの AcknowledgeMode プロパティをオーバーライドします。有効な列挙の 1 つである必要があります。SpEL 式が提供されている場合、StringSE または AcknowledgeMode に評価される必要があります。
      戻り値:
      承認モード。
      導入:
      2.2
      デフォルト:
      ""
    • replyPostProcessor

      StringSE replyPostProcessor
      送信前にレスポンスを後処理する ReplyPostProcessor の Bean 名。SpEL 式が指定されている場合 (#{...})、式はポストプロセッサーインスタンスまたは Bean 名のいずれかに評価されます。
      戻り値:
      Bean 名。
      導入:
      2.2.5
      関連事項:
      デフォルト:
      ""
    • messageConverter

      StringSE messageConverter
      このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。
      戻り値:
      メッセージコンバーター Bean 名。SpEL 式が指定されている場合 (#{...})、式はコンバーターインスタンスまたは Bean 名のいずれかに評価されます。
      導入:
      2.3
      デフォルト:
      ""
    • replyContentType

      StringSE replyContentType
      返信メッセージのコンテンツ型を設定するために使用されます。ContentTypeDelegatingMessageConverter など、複数のコンテンツ型を処理できるメッセージコンバーターと組み合わせて使用すると便利です。SpEL 式とプロパティプレースホルダーがサポートされています。特定のコンバーターで使用するときに、最終的なコンテンツ型のプロパティを制御する場合にも役立ちます。これは、戻り型が Message または Message の場合には適用されません。その場合は、コンテンツ型のメッセージプロパティまたはヘッダーをそれぞれ設定します。
      戻り値:
      コンテンツ型。
      導入:
      2.3
      関連事項:
      デフォルト:
      ""
    • converterWinsContentType

      StringSE converterWinsContentType
      メッセージコンバーターによって設定されたコンテンツ型 ヘッダーを "replyContentType" プロパティの値でオーバーライドするには、"false" に設定します。SimpleMessageConverter などの一部のコンバーターは、ペイロード型を使用し、コンテンツ型 ヘッダーを適切に設定します。例: "replyContentType" を "application/json" に設定し、JSON を含む文字列を返すときに単純なメッセージコンバーターを使用すると、コンバーターはコンテンツ型を "text/plain" に上書きします。そのアクションを防止するには、これを false に設定します。戻り値の型が Message の場合、変換は行われないため、これは当てはまりません。Message を返す場合は、コンテンツ型 メッセージヘッダーと AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS を false に設定します。
      戻り値:
      replyContentType を使用する場合は false。
      導入:
      2.3
      関連事項:
      デフォルト:
      「本当」
    • batch

      StringSE batch
      コンテナーファクトリの batchListener プロパティをオーバーライドします。リスナーメソッドのシグネチャーは List<?> を受け取る必要があります。リファレンスドキュメントを参照してください。これにより、単一のコンテナーファクトリをレコードリスナーとバッチリスナーの両方に使用できます。以前は別々のコンテナーファクトリが必要でした。
      戻り値:
      アノテーション付きメソッドがバッチリスナーになる場合は "true"、単一メッセージリスナーの場合は "false"。設定されていない場合、コンテナーのファクトリ設定が使用されます。リスナーの型を変数にできないため、SpEL とプロパティのプレースホルダーはサポートされていません。
      導入:
      3.0
      関連事項:
      デフォルト:
      ""