2.0 以降の 2.1 の変更点
AMQP クライアントライブラリ
Spring AMQP は、RabbitMQ チームが提供する amqp-client
ライブラリの 5.4.x バージョンを使用するようになりました。このクライアントには、デフォルトで自動回復が構成されています。RabbitMQ 自動接続 / トポロジリカバリを参照してください。
バージョン 4.0 以降、クライアントはデフォルトで自動回復を有効にします。この機能と互換性がありますが、Spring AMQP には独自の回復メカニズムがあり、通常、クライアント回復機能は必要ありません。ブローカーが使用可能であるが接続がまだ回復していない場合に AutoRecoverConnectionNotCurrentlyOpenException インスタンスを取得しないように、amqp-client 自動回復を無効にすることをお勧めします。バージョン 1.7.1 以降、独自の RabbitMQ 接続ファクトリを明示的に作成して CachingConnectionFactory に提供しない限り、Spring AMQP はそれを無効にします。RabbitConnectionFactoryBean によって作成された RabbitMQ ConnectionFactory インスタンスでも、このオプションはデフォルトで無効になっています。 |
パッケージの変更
一部のクラスは別のパッケージに移動しました。ほとんどは内部クラスであり、ユーザーアプリケーションには影響しません。2 つの例外は ChannelAwareMessageListener
と RabbitListenerErrorHandler
です。これらのインターフェースは現在 org.springframework.amqp.rabbit.listener.api
にあります。
パブリッシャーが変更を確認
パブリッシャーの確認が有効になっているチャネルは、未処理の確認がある間はキャッシュに返されません。詳細については、相関するパブリッシャーの確認と return を参照してください。
リスナーコンテナーファクトリの改善
リスナーコンテナーファクトリを使用して、@RabbitListener
アノテーションまたは @RabbitListenerEndpointRegistry
で使用するためのリスナーコンテナーだけでなく、任意のリスナーコンテナーを作成できるようになりました。詳細については、コンテナーファクトリの使用を参照してください。
ChannelAwareMessageListener
は MessageListener
を継承するようになりました。
ブローカーイベントリスナー
選択したブローカーイベントを ApplicationEvent
インスタンスとして公開するために、BrokerEventListener
が導入されました。詳細については、ブローカーイベントリスナーを参照してください。
RabbitAdmin の変更
RabbitAdmin
は、型 Declarables
(Declarable
- Queue
、Exchange
、Binding
オブジェクトのコンテナー) の Bean を検出し、ブローカーで含まれているオブジェクトを宣言します。ユーザーは、<Collection<Queue>>
(およびその他) を宣言する古いメカニズムを使用することをお勧めしません。代わりに Declarables
Bean を使用する必要があります。デフォルトでは、古いメカニズムは無効になっています。詳細については、交換、キュー、バインディングのコレクションの宣言を参照してください。
AnonymousQueue
インスタンスは、デフォルトで x-queue-master-locator
が client-local
に設定されて宣言されるようになり、アプリケーションが接続されているノードでキューが確実に作成されるようになりました。詳細については、ブローカーの構成を参照してください。
RabbitTemplate の変更
sendAndReceive()
操作で応答コンシューマーの noLocal
フラグを制御するために、noLocalReplyConsumer
オプションを使用して RabbitTemplate
を構成できるようになりました。詳細については、リクエスト / 応答メッセージを参照してください。
パブリッシャー確認用の CorrelationData
に ListenableFuture
が追加されました。これを使用して、コールバックを使用する代わりに確認を取得できます。return と確認が有効になっている場合、相関データが提供されている場合は、返されたメッセージが入力されます。詳細については、相関するパブリッシャーの確認と return を参照してください。
応答がタイムアウトしたことをサブクラスに通知する replyTimedOut
と呼ばれるメソッドが提供され、状態のクリーンアップが可能になりました。詳細については、返信タイムアウトを参照してください。
応答が配信されたときに例外が発生した場合 (たとえば、応答の遅延)、DirectReplyToMessageListenerContainer
(デフォルト) でリクエスト / 応答を使用するときに、ErrorHandler
が呼び出されるように指定できるようになりました。RabbitTemplate
の setReplyErrorHandler
を参照してください。(これも 2.0.11 以来)。
メッセージ変換
メッセージの XML 形式との間の変換をサポートするために、新しい Jackson2XmlMessageConverter
を導入しました。詳細については、Jackson2XmlMessageConverter
を参照してください。
管理 REST API
RabbitManagementTemplate
は、直接 com.rabbitmq.http.client.Client
(または com.rabbitmq.http.client.ReactorNettyClient
) を使用することを推奨して非推奨になりました。詳細については、RabbitMQ REST API を参照してください。
@RabbitListener
の変更
リスナーコンテナーファクトリを RetryTemplate
で構成できるようになりました。オプションで、応答を送信するときに使用される RecoveryCallback
を使用することもできます。詳細については、リスナーエンドポイントアノテーションを有効にするを参照してください。
非同期 @RabbitListener
リターン
@RabbitListener
メソッドは ListenableFuture<?>
または Mono<?>
を返すことができるようになりました。詳細については、非同期 @RabbitListener
戻り型を参照してください。
接続ファクトリ Bean の変更点
デフォルトでは、RabbitConnectionFactoryBean
は enableHostnameVerification()
を呼び出すようになりました。以前の動作に戻すには、enableHostnameVerification
プロパティを false
に設定します。
接続ファクトリの変更
CachingConnectionFactory
は、事前構成されたインスタンスがコンストラクターで提供されている場合でも、基になる RabbitMQ ConnectionFactory
の自動回復を無条件に無効にするようになりました。Spring AMQP を自動回復と互換性を持たせるための措置が講じられていますが、課題が残る特定のまれなケースが発生しています。Spring AMQP には、1.0.0 以降、独自の回復メカニズムがあり、クライアントによって提供される回復を使用する必要はありません。CachingConnectionFactory
の構築後にこの機能を (cachingConnectionFactory.getRabbitConnectionFactory()
.setAutomaticRecoveryEnabled()
を使用して) 有効にすることは引き続き可能ですが、そうしないことを強くお勧めします。(Spring AMQP コンポーネントを使用するのではなく) クライアントファクトリを直接使用するときに自動回復接続が必要な場合は、個別の RabbitMQ ConnectionFactory
を使用することをお勧めします。
リスナーコンテナーの変更
デフォルトの ConditionalRejectingErrorHandler
は、x-death
ヘッダーが存在する場合に致命的なエラーを引き起こすメッセージを完全に破棄するようになりました。詳細については、例外処理を参照してください。
即時リキュー
メッセージを再キューイングする必要があることをリスナーコンテナーに通知するために、新しい ImmediateRequeueAmqpException
が導入されました。この機能を使用するために、新しい ImmediateRequeueMessageRecoverer
実装が追加されました。
詳細については、メッセージリスナーと非同期ケースを参照してください。