2.1 以降の 2.2 の変更点

このセクションでは、バージョン 2.1 とバージョン 2.2 の間の変更点について説明します。

パッケージの変更

次のクラス / インターフェースが org.springframework.amqp.rabbit.core.support から org.springframework.amqp.rabbit.batch に移動されました:

  • BatchingStrategy

  • MessageBatch

  • SimpleBatchingStrategy

さらに、ListenerExecutionFailedException は org.springframework.amqp.rabbit.listener.exception から org.springframework.amqp.rabbit.support に移動されました。

依存関係の変更

JUnit (4) はオプションの依存関係になり、推移的な依存関係として表示されなくなりました。

spring-rabbit-junit モジュールは、spring-rabbit-test モジュールのコンパイル依存関係になり、単一の spring-rabbit-test だけで AMQP コンポーネントのテストユーティリティの完全なスタックを取得する場合に、ターゲットアプリケーションの開発エクスペリエンスが向上します。

[[-breaking-api-changes]] == 「重大な」API 変更

JUnit (5) RabbitAvailableCondition.getBrokerRunning() は、JUnit 4 に依存する BrokerRunning の代わりに BrokerRunningSupport インスタンスを返すようになりました。これは同じ API を持っているため、参照のクラス名を変更するだけです。詳細については、JUnit5 条件を参照してください。

ListenerContainer の変更

致命的な例外を含むメッセージは拒否され、確認モードが手動であってもデフォルトで再キューイングされません。詳細については、例外処理を参照してください。

リスナーのパフォーマンスは、Micrometer Timer を使用して監視できるようになりました。詳細については、リスナーのパフォーマンスの監視を参照してください。

@RabbitListener の変更

各リスナーで executor を構成し、ファクトリ構成を上書きして、リスナーに関連付けられたスレッドをより簡単に識別できるようになりました。コンテナーファクトリの acknowledgeMode プロパティをアノテーションの ackMode プロパティでオーバーライドできるようになりました。詳細については、コンテナーファクトリプロパティのオーバーライドを参照してください。

バッチ処理を使用する場合、@RabbitListener メソッドは、一度に 1 つずつ取得するのではなく、1 回の呼び出しでメッセージの完全なバッチを受信できるようになりました。

バッチ処理されたメッセージを一度に 1 つずつ受信すると、最後のメッセージの isLastInBatch メッセージプロパティが true に設定されます。

さらに、受信したバッチメッセージに amqp_batchSize ヘッダーが含まれるようになりました。

バッチがプロデューサーによって作成されていない場合でも、リスナーは SimpleMessageListenerContainer で作成されたバッチを使用することもできます。詳細については、コンテナーの選択を参照してください。

Spring Data 射影 インターフェースが Jackson2JsonMessageConverter でサポートされるようになりました。詳細については、Spring Data 射影 インターフェースの使用を参照してください。

contentType プロパティがない場合、またはデフォルト (application/octet-string) の場合、Jackson2JsonMessageConverter はコンテンツが JSON であると想定するようになりました。詳細については、Message からの変換を参照してください。

同様に。contentType プロパティがない場合、またはデフォルト (application/octet-string) の場合、Jackson2XmlMessageConverter はコンテンツが XML であると想定するようになりました。詳細については、Jackson2XmlMessageConverter を参照してください。

@RabbitListener メソッドが結果を返す場合、応答メッセージプロパティで Bean および Method を使用できるようになりました。これにより、beforeSendReplyMessagePostProcessor の構成で、たとえば、応答にヘッダーを設定して、サーバーで呼び出されたメソッドを示すことができます。詳細については、返信管理を参照してください。

ReplyPostProcessor を構成して、返信メッセージを送信前に変更できるようになりました。詳細については、返信管理を参照してください。

AMQP ロギングアペンダーの変更

Log4J および Logback AmqpAppender は、verifyHostname SSL オプションをサポートするようになりました。

また、これらのアペンダは、MDC エントリをヘッダーとして追加しないように構成できるようになりました。このような動作を構成するために、addMdcAsHeaders ブール値オプションが導入されました。

アペンダーが SaslConfig プロパティをサポートするようになりました。

詳細については、ロギングサブシステム AMQP アペンダを参照してください。

MessageListenerAdapter の変更

MessageListenerAdapter は、ターゲットリスナーに渡される引数の配列を構築するための新しい buildListenerArguments(Object, Channel, Message) メソッドを提供するようになりました。古いものは非推奨です。詳細については、MessageListenerAdapter を参照してください。

[[exchange/queue-declaration-changes]] == Exchange/ キュー宣言の変更

RabbitAdmin による宣言のために Exchange および Queue オブジェクトを作成するために使用される ExchangeBuilder および QueueBuilder 流れるような API は、「既知の」引数をサポートするようになりました。詳細については、キューとエクスチェンジのビルダー API を参照してください。

RabbitAdmin には新しいプロパティ explicitDeclarationsOnly があります。詳細については、条件宣言を参照してください。

接続ファクトリの変更

CachingConnectionFactory には新しいプロパティ shuffleAddresses があります。ブローカーノードアドレスのリストを提供する場合、接続が試行される順序がランダムになるように、接続を作成する前にリストがシャッフルされます。詳細については、クラスターへの接続を参照してください。

Publisher の確認と戻りを使用すると、接続ファクトリの executor でコールバックが呼び出されるようになりました。これにより、コールバック内から rabbit 操作を実行する場合に、amqp-clients ライブラリでデッドロックが発生する可能性が回避されます。詳細については、相関するパブリッシャーの確認と return を参照してください。

また、パブリッシャーの確認型は、相互に排他的な 2 つの setter メソッドではなく、ConfirmType 列挙型で指定されるようになりました。

SSL が有効な場合、RabbitConnectionFactoryBean はデフォルトで TLS 1.2 を使用するようになりました。詳細については、RabbitConnectionFactoryBean と SSL の構成を参照してください。

新しい MessagePostProcessor クラス

メッセージ content-encoding が deflate に設定されている場合に、クラス DeflaterPostProcessor および InflaterPostProcessor がそれぞれ圧縮および圧縮解除をサポートするために追加されました。

その他の変更

Declarables オブジェクト (複数のキュー、エクスチェンジ、バインディングを宣言するため) には、型ごとにフィルター処理された getter が含まれるようになりました。詳細については、交換、キュー、バインディングのコレクションの宣言を参照してください。

RabbitAdmin がその宣言を処理する前に、各 Declarable Bean をカスタマイズできるようになりました。詳細については、交換、キュー、バインディングの自動宣言を参照してください。

 x-single-active-consumer キュー引数を設定するために、QueueBuilder に singleActiveConsumer() が追加されました。詳細については、キューとエクスチェンジのビルダー API を参照してください。

型 Class<?> の値を持つ送信ヘッダーは、toString() の代わりに getName() を使用してマップされるようになりました。詳細については、メッセージプロパティコンバーターを参照してください。

失敗したプロデューサー作成のバッチのリカバリがサポートされるようになりました。詳細については、バッチリスナーで再試行を参照してください。