アノテーション型 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 - すべてのヘッダーにアクセスするために MapSE にも割り当て可能でなければならないアノテーション付き引数。
    • すべてのヘッダーにアクセスするための MessageHeaders 引数。
    • すべてのメソッド引数への便利なアクセスのための MessageHeaderAccessor または AmqpMessageHeaderAccessor

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

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

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

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

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

      オプション要素  
      修飾子と型 オプションの要素 説明
      StringSEackMode
      コンテナーファクトリの AcknowledgeMode プロパティをオーバーライドします。
      StringSEadmin
      AmqpAdmin への参照。
      StringSEautoStartup
      コンテナーファクトリのデフォルト設定を上書きするには、true または false に設定します。
      QueueBinding[]bindings
      交換およびオプションのバインディング情報とともに、リスナーのキュー名を提供する QueueBinding の配列。
      StringSEconcurrency
      このリスナーのリスナーコンテナーの同時実行数を設定します。
      StringSEcontainerFactory
      このエンドポイントのサービスを担当するメッセージリスナーコンテナーを作成するために使用する RabbitListenerContainerFactory の Bean 名。
      StringSEconverterWinsContentType
      メッセージコンバーターによって設定されたコンテンツ型 ヘッダーを "replyContentType" プロパティの値でオーバーライドするには、"false" に設定します。
      StringSEerrorHandler
      リスナーメソッドが例外をスローした場合に呼び出す RabbitListenerErrorHandler を設定します。
      booleanexclusive
      true の場合、コンテナー内の単一のコンシューマーが queues() を排他的に使用し、他のコンシューマーがキューからメッセージを受信できないようにします。
      StringSEexecutor
      このリスナーのコンテナーに使用するタスクエグゼキューター Bean 名を設定します。コンテナーファクトリに設定されたエグゼキュータをオーバーライドします。
      StringSEgroup
      提供されている場合、このリスナーのリスナーコンテナーは、この値を名前として Collection<MessageListenerContainer> 型の Bean に追加されます。
      StringSEid
      このエンドポイントを管理するコンテナーの一意の識別子。
      StringSEmessageConverter
      このリスナーに使用されるコンテナーファクトリのメッセージコンバーターをオーバーライドします。
      StringSEpriority
      このエンドポイントの優先度。
      StringSE[]queues
      このリスナーのキュー。
      Queue[]queuesToDeclare
      このリスナーのキュー。
      StringSEreplyContentType
      返信メッセージのコンテンツ型を設定するために使用されます。
      StringSEreplyPostProcessor
      送信前にレスポンスを後処理する ReplyPostProcessor の Bean 名。
      StringSEreturnExceptions
      "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 以上が必要です。デフォルトではコンテナーの優先度を変更しません。数値が大きいほど優先度が高く、正と負の両方の数値を使用できます。
        戻り値:
        エンドポイントの優先度。
        デフォルト:
        ""
      • admin

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