アノテーションインターフェース 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
- すべてのヘッダーにアクセスするためにMap
SE にも割り当て可能でなければならないアノテーション付き引数。- すべてのヘッダーにアクセスするための
MessageHeaders
引数。 - すべてのメソッド引数への便利なアクセスのための
MessageHeaderAccessor
またはAmqpMessageHeaderAccessor
。
アノテーション付きのメソッドは、非 void
戻り型を持つ場合があります。その場合、メソッド呼び出しの結果は、受信メッセージの ReplyTo
ヘッダーによって定義されたキューへの応答として送信されます。この値が設定されていない場合は、メソッド宣言に @SendTo
を追加することでデフォルトキューを提供できます。
bindings()
が提供され、アプリケーションコンテキストに RabbitAdmin
が含まれている場合、キュー、交換、バインディングが自動的に宣言されます。
メソッドレベルで定義すると、メソッドごとにリスナーコンテナーが作成されます。MessageListener
は MessagingMessageListenerAdapter
であり、MethodRabbitListenerEndpoint
で構成されています。
クラスレベルで定義されている場合、単一のメッセージリスナーコンテナーを使用して、@RabbitHandler
アノテーションが付けられたすべてのメソッドにサービスを提供します。このようなアノテーション付きメソッドのメソッドシグネチャーは、特定の受信メッセージに対して単一のメソッドを解決できるようなあいまいさを引き起こしてはなりません。MessagingMessageListenerAdapter
は MultiMethodRabbitListenerEndpoint
で構成されます。
- 導入:
- 1.4
- 作成者:
- Stephane Nicoll, Gary Russell
- 関連事項:
オプション要素のサマリー
オプション要素修飾子と型オプションの要素説明コンテナーファクトリのAcknowledgeMode
プロパティをオーバーライドします。AmqpAdmin
への参照。コンテナーファクトリのデフォルト設定を上書きするには、true または false に設定します。コンテナーファクトリのbatchListener
プロパティをオーバーライドします。交換およびオプションのバインディング情報とともに、リスナーのキュー名を提供するQueueBinding
の配列。このリスナーのリスナーコンテナーの同時実行数を設定します。このエンドポイントのサービスを担当するメッセージリスナーコンテナーを作成するために使用するRabbitListenerContainerFactory
の Bean 名。メッセージコンバーターによって設定されたコンテンツ型 ヘッダーを "replyContentType" プロパティの値でオーバーライドするには、"false" に設定します。リスナーメソッドが例外をスローした場合に呼び出すRabbitListenerErrorHandler
を設定します。boolean
true
の場合、コンテナー内の単一のコンシューマーがqueues()
を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。このリスナーのコンテナーに使用するタスクエグゼキューター Bean 名を設定します。コンテナーファクトリに設定されたエグゼキュータをオーバーライドします。提供されている場合、このリスナーのリスナーコンテナーは、この値を名前としてCollection<MessageListenerContainer>
型の Bean に追加されます。このエンドポイントを管理するコンテナーの一意の識別子。このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。このエンドポイントの優先度。StringSE[]
このリスナーのキュー。Queue[]
このリスナーのキュー。返信メッセージのコンテンツ型を設定するために使用されます。送信前にレスポンスを後処理するReplyPostProcessor
の Bean 名。"true" に設定すると、リスナーによってスローされた例外が、通常のreplyTo/@SendTo
セマンティクスを使用して送信者に送信されます。
要素の詳細
id
StringSE 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 exclusivetrue
の場合、コンテナー内の単一のコンシューマーがqueues()
を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。true
の場合、1 の並行性が必要です。デフォルトはfalse
です。- 戻り値:
exclusive
ブール値フラグ。
- デフォルト:
- false
priority
StringSE priorityこのエンドポイントの優先度。RabbitMQ 3.2 以上が必要です。デフォルトではコンテナーの優先度を変更しません。数値が大きいほど優先度が高く、正と負の両方の数値を使用できます。- 戻り値:
- エンドポイントの優先度。
- デフォルト:
- ""
admin
StringSE adminAmqpAdmin
への参照。リスナーが自動削除キューを使用しており、それらのキューが条件付き宣言用に構成されている場合は必須です。これは、コンテナーが (再) 開始されたときにこれらのキューを (再) 宣言する管理者です。詳細については、リファレンスドキュメントを参照してください。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 式が提供されている場合、String
SE または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
- 関連事項:
- デフォルト:
- ""