1.4 以降の 1.5 の変更点

spring-erlang はサポートされなくなりました

spring-erlang jar はディストリビューションに含まれなくなりました。代わりに、RabbitMQ REST API を使用してください。

CachingConnectionFactory の変更

CachingConnectionFactory の空のアドレスプロパティ

以前は、接続ファクトリがホストとポートで構成されていて、空の文字列も addresses に指定されている場合、ホストとポートは無視されていました。現在、空の addresses 文字列は null と同じように扱われ、ホストとポートが使用されます。

URI コンストラクター

CachingConnectionFactory には、ブローカー接続を構成するための URI パラメーターを持つ追加のコンストラクターがあります。

接続のリセット

ユーザーが接続をリセットできるように、resetConnection() と呼ばれる新しいメソッドが追加されました。たとえば、これを使用して、セカンダリブローカにフェールオーバーした後にプライマリブローカに再接続できます。これは、インプロセスオペレーションに影響を与えます。既存の destroy() メソッドはまったく同じことを行いますが、新しいメソッドの名前はそれほど難しくありません。

コンテナーキュー宣言の動作を制御するプロパティ

リスナーコンテナーコンシューマーは、開始時にキューを受動的に宣言して、ブローカーで確実に使用できるようにしようとします。以前は、これらの宣言が失敗した場合 (たとえば、キューが存在しなかったため)、HA キューが移動された場合、再試行ロジックは 5 秒間隔で 3 回再試行されるように修正されていました。キューがまだ存在しない場合、動作は missingQueuesFatal プロパティによって制御されます (デフォルト: true)。また、複数のキューからリッスンするように構成されたコンテナーの場合、キューのサブセットのみが使用可能な場合、コンシューマーは 60 秒の固定間隔で不足しているキューを再試行しました。

declarationRetriesfailedDeclarationRetryIntervalretryDeclarationInterval プロパティが設定可能になりました。詳細については、メッセージリスナーコンテナーの設定を参照してください。

クラスパッケージの変更

RabbitGatewaySupport クラスは o.s.amqp.rabbit.core.support から o.s.amqp.rabbit.core に移動しました。

DefaultMessagePropertiesConverter の変更

DefaultMessagePropertiesConverter を構成して、DataInputStream ではなく String に変換される LongString の最大長を判別できるようになりました。コンバーターには、値を制限として受け取る代替コンストラクターがあります。以前は、この制限は 1024 バイトでハードコードされていました。(1.4.4 でも利用可能)。

@RabbitListener の改善

 @RabbitListener@QueueBinding 

bindings 属性は、queues 属性と相互に排他的なものとして @RabbitListener アノテーションに追加され、ブローカー上の RabbitAdmin による宣言のために queue、その exchangebinding を指定できるようになりました。

@SendTo の SpEL

@RabbitListener のデフォルトの返信アドレス (@SendTo) を SpEL 式にすることができるようになりました。

プロパティによる複数のキュー名

SpEL とプロパティプレースホルダーの組み合わせを使用して、リスナーに複数のキューを指定できるようになりました。

詳細については、アノテーション駆動型のリスナーエンドポイントを参照してください。

Exchange、Queue、Binding の自動宣言

これらのエンティティのコレクションを定義する Bean を宣言できるようになりました。RabbitAdmin は、接続が確立されたときに宣言するエンティティのリストにコンテンツを追加します。詳細については、交換、キュー、バインディングのコレクションの宣言を参照してください。

RabbitTemplate の変更

reply-address が追加されました

reply-address 属性は、代替の reply-queue として <rabbit-template> コンポーネントに追加されました。詳細については、リクエスト / 応答メッセージを参照してください。(RabbitTemplate の setter として 1.4.4 でも利用できます)。

receive メソッドのブロック

RabbitTemplate は、receive および convertAndReceive メソッドでのブロッキングをサポートするようになりました。詳細については、ポーリングコンシューマーを参照してください。

sendAndReceive メソッドでは必須

sendAndReceive および convertSendAndReceive メソッドの使用時に mandatory フラグが設定されている場合、リクエストメッセージを配信できない場合、呼び出しスレッドは AmqpMessageReturnedException をスローします。詳細については、返信タイムアウトを参照してください。

応答リスナーの不適切な構成

フレームワークは、名前付き応答キューを使用するときに、応答リスナーコンテナーの適切な構成を検証しようとします。

詳細については、応答リスナーコンテナーを参照してください。

RabbitManagementTemplate が追加されました

管理プラグイン (英語) によって提供される REST API を使用して、RabbitMQ ブローカーを監視および構成するために、RabbitManagementTemplate が導入されました。詳細については、[ 管理 - 残り -API] を参照してください。

リスナーコンテナー Bean 名 (XML)

<listener-container/> 要素の id 属性が削除されました。このリリース以降、<listener/> 子要素の id は、リスナー要素ごとに作成されたリスナーコンテナー Bean の名前を付けるために単独で使用されます。

通常の Spring Bean 名のオーバーライドが適用されます。後の <listener/> が既存の Bean と同じ id で解析される場合、新しい定義が既存の定義をオーバーライドします。以前は、Bean 名は <listener-container/> 要素と <listener/> 要素の id 属性から構成されていました。

このリリースに移行するときに、<listener-container/> 要素に id 属性がある場合は、削除し、代わりに子 <listener/> 要素に id を設定します。

ただし、コンテナーをグループとして開始および停止することをサポートするために、新しい group 属性が追加されました。この属性が定義されている場合、このエレメントによって作成されたコンテナーは、型 Collection<SimpleMessageListenerContainer> のこの名前の Bean に追加されます。このグループを繰り返し処理して、コンテナーを開始および停止できます。

クラスレベルの @RabbitListener

@RabbitListener アノテーションをクラスレベルで適用できるようになりました。新しい @RabbitHandler メソッドアノテーションと合わせて、ペイロード型に基づいてハンドラーメソッドを選択できます。詳細については、マルチメソッドリスナーを参照してください。

SimpleMessageListenerContainer: BackOff サポート

SimpleMessageListenerContainer に、consumer スタートアップリカバリ用の BackOff インスタンスを提供できるようになりました。詳細については、メッセージリスナーコンテナーの設定を参照してください。

チャネルクローズロギング

チャネル閉鎖のログレベルを制御するメカニズムが導入されました。チャネルクローズロギングを参照してください。

アプリケーションイベント

SimpleMessageListenerContainer は、コンシューマーが失敗したときにアプリケーションイベントを発行するようになりました。詳細については、コンシューマーイベントを参照してください。

コンシューマータグの設定

以前は、非同期コンシューマーのコンシューマータグはブローカーによって生成されていました。このリリースでは、リスナーコンテナーに命名戦略を提供できるようになりました。コンシューマータグを参照してください。

MessageListenerAdapter を使用する

MessageListenerAdapter は、キュー名 (またはコンシューマータグ) からメソッド名へのマップをサポートするようになり、メッセージの受信元のキューに基づいて呼び出すデリゲートメソッドを決定します。

LocalizedQueueConnectionFactory が追加されました

LocalizedQueueConnectionFactory は、ミラーリングされたキューが実際に存在するクラスター内のノードに接続する新しい接続ファクトリです。

匿名キューの命名

バージョン 1.5.3 以降、AnonymousQueue 名の生成方法を制御できるようになりました。詳細については、AnonymousQueue を参照してください。