アノテーション型 RabbitListener
@TargetSE({TYPESE,METHODSE,ANNOTATION_TYPESE}) @RetentionSE(RUNTIMESE) @MessageMapping @DocumentedSE @RepeatableSE(RabbitListeners.class) public @interface 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
- 関連事項:
EnableRabbit
,RabbitListenerAnnotationBeanPostProcessor
,RabbitListeners
- チャネルへのアクセスを取得するための
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 StringSE
ackMode
コンテナーファクトリのAcknowledgeMode
プロパティをオーバーライドします。StringSE
admin
AmqpAdmin
への参照。StringSE
autoStartup
コンテナーファクトリのデフォルト設定を上書きするには、true または false に設定します。QueueBinding[]
bindings
交換およびオプションのバインディング情報とともに、リスナーのキュー名を提供するQueueBinding
の配列。StringSE
concurrency
このリスナーのリスナーコンテナーの同時実行数を設定します。StringSE
containerFactory
このエンドポイントのサービスを担当するメッセージリスナーコンテナーを作成するために使用するRabbitListenerContainerFactory
の Bean 名。StringSE
converterWinsContentType
メッセージコンバーターによって設定されたコンテンツ型 ヘッダーを "replyContentType" プロパティの値でオーバーライドするには、"false" に設定します。StringSE
errorHandler
リスナーメソッドが例外をスローした場合に呼び出すRabbitListenerErrorHandler
を設定します。boolean
exclusive
true
の場合、コンテナー内の単一のコンシューマーがqueues()
を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。StringSE
executor
このリスナーのコンテナーに使用するタスクエグゼキューター Bean 名を設定します。コンテナーファクトリに設定されたエグゼキュータをオーバーライドします。StringSE
group
提供されている場合、このリスナーのリスナーコンテナーは、この値を名前としてCollection<MessageListenerContainer>
型の Bean に追加されます。StringSE
id
このエンドポイントを管理するコンテナーの一意の識別子。StringSE
messageConverter
このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。StringSE
priority
このエンドポイントの優先度。StringSE[]
queues
このリスナーのキュー。Queue[]
queuesToDeclare
このリスナーのキュー。StringSE
replyContentType
返信メッセージのコンテンツ型を設定するために使用されます。StringSE
replyPostProcessor
送信前にレスポンスを後処理するReplyPostProcessor
の Bean 名。StringSE
returnExceptions
"true" に設定すると、リスナーによってスローされた例外が、通常のreplyTo/@SendTo
セマンティクスを使用して送信者に送信されます。
要素の詳細
id
StringSE id
このエンドポイントを管理するコンテナーの一意の識別子。何も指定されていない場合は、自動生成されたものが提供されます。
- 戻り値:
- このエンドポイントを管理するコンテナーの
id
。 - 関連事項:
RabbitListenerEndpointRegistry.getListenerContainer(String)
- デフォルト:
- ""
containerFactory
StringSE containerFactory
このエンドポイントのサービスを担当するメッセージリスナーコンテナーを作成するために使用するRabbitListenerContainerFactory
の Bean 名。指定しない場合、デフォルトのコンテナーファクトリが使用されます(存在する場合)。SpEL 式が提供されている場合(
#{...}
)、式はコンテナーファクトリインスタンスまたは Bean 名のいずれかに評価できます。- 戻り値:
RabbitListenerContainerFactory
Bean 名。
- デフォルト:
- ""
queues
StringSE[] queues
このリスナーのキュー。エントリは、'queue name'、'property-placeholder keys'、または 'expressions' です。式は、キュー名またはQueue
オブジェクトに解決する必要があります。キューが存在するか、アプリケーションコンテキストでRabbitAdmin
を持つ Bean として別の場所で定義されている必要があります。bindings()
およびqueuesToDeclare()
とは相互に排他的です。- 戻り値:
- ターゲットからリッスンするキュー名または式 (SpEL)
- 関連事項:
MessageListenerContainer
- デフォルト:
- {}
queuesToDeclare
Queue[] queuesToDeclare
このリスナーのキュー。アプリケーションコンテキストにRabbitAdmin
がある場合、キューはブローカでデフォルトバインディングで宣言されます (ルーティングキーとしてキュー名を使用したデフォルト交換)。bindings()
およびqueues()
とは相互に排他的です。- 戻り値:
- 宣言するキュー。
- 導入:
- 2.0
- 関連事項:
MessageListenerContainer
- デフォルト:
- {}
exclusive
boolean exclusive
true
の場合、コンテナー内の単一のコンシューマーがqueues()
を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。true
の場合、1 の並行性が必要です。デフォルトはfalse
です。- 戻り値:
exclusive
ブール値フラグ。
- デフォルト:
- false
priority
StringSE priority
このエンドポイントの優先度。RabbitMQ 3.2 以上が必要です。デフォルトではコンテナーの優先度を変更しません。数値が大きいほど優先度が高く、正と負の両方の数値を使用できます。- 戻り値:
- エンドポイントの優先度。
- デフォルト:
- ""
bindings
QueueBinding[] bindings
- 戻り値:
- バインディング。
- 導入:
- 1.5
- 関連事項:
MessageListenerContainer
- デフォルト:
- {}
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
- 関連事項:
AbstractAdaptableMessageListener.setReplyPostProcessor(org.springframework.amqp.rabbit.listener.adapter.ReplyPostProcessor)
- デフォルト:
- ""
messageConverter
StringSE messageConverter
このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。- 戻り値:
- メッセージコンバーター Bean 名。SpEL 式が指定されている場合 (
#{...}
)、式はコンバーターインスタンスまたは Bean 名のいずれかに評価されます。 - 導入:
- 2.3
- デフォルト:
- ""
replyContentType
StringSE replyContentType
返信メッセージのコンテンツ型を設定するために使用されます。ContentTypeDelegatingMessageConverter
など、複数のコンテンツ型を処理できるメッセージコンバーターと組み合わせて使用すると便利です。SpEL 式とプロパティプレースホルダーがサポートされています。特定のコンバーターで使用するときに、最終的なコンテンツ型のプロパティを制御する場合にも役立ちます。これは、戻り型がMessage
またはMessage
の場合には適用されません。その場合は、コンテンツ型のメッセージプロパティまたはヘッダーをそれぞれ設定します。- 戻り値:
- コンテンツ型。
- 導入:
- 2.3
- 関連事項:
converterWinsContentType()
- デフォルト:
- ""
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
- 関連事項:
replyContentType()
- デフォルト:
- 「本当」