1.3 以降の 1.4 の変更点

@RabbitListener アノテーション

POJO リスナーには、@EnableRabbit または <rabbit:annotation-driven /> によって有効化される @RabbitListener でアノテーションを付けることができます。この機能には Spring Framework 4.1 が必要です。詳細については、アノテーション駆動型のリスナーエンドポイントを参照してください。

RabbitMessagingTemplate が追加されました

新しい RabbitMessagingTemplate を使用すると、spring-messaging Message インスタンスを使用して RabbitMQ と対話できます。内部的には、通常どおり設定できる RabbitTemplate を使用します。この機能には Spring Framework 4.1 が必要です。詳細については、メッセージングの統合を参照してください。

リスナーコンテナー missingQueuesFatal 属性

1.3.5 SimpleMessageListenerContainer に missingQueuesFatal プロパティを導入しました。これは、リスナーコンテナーの名前空間要素で使用できるようになりました。メッセージリスナーコンテナーの設定を参照してください。

RabbitTemplate ConfirmCallback インターフェース

このインターフェースの confirm メソッドには、cause という追加パラメーターがあります。利用可能な場合、このパラメーターには否定応答 (nack) の理由が含まれます。相関するパブリッシャーの確認と return を参照してください。

RabbitConnectionFactoryBean が追加されました

RabbitConnectionFactoryBean は、CachingConnectionFactory によって使用される基礎となる RabbitMQ ConnectionFactory を作成します。これにより、Spring の依存性注入を使用して SSL オプションを構成できます。基礎となるクライアント接続ファクトリの構成を参照してください。

CachingConnectionFactory を使用する

CachingConnectionFactory では、connectionTimeout を名前空間のプロパティまたは属性として設定できるようになりました。基礎となる RabbitMQ ConnectionFactory のプロパティを設定します。基礎となるクライアント接続ファクトリの構成を参照してください。

ログアペンダー

Logback org.springframework.amqp.rabbit.logback.AmqpAppender が導入されました。org.springframework.amqp.rabbit.log4j.AmqpAppender と同様のオプションを提供します。詳細については、これらのクラスの JavaDoc を参照してください。

Log4j AmqpAppender は、deliveryMode プロパティ (PERSISTENT または NON_PERSISTENT、デフォルト: PERSISTENT) をサポートするようになりました。以前は、log4j メッセージはすべて PERSISTENT でした。

アペンダーは、送信前の Message の変更もサポートしています。たとえば、カスタムヘッダーの追加が可能です。サブクラスは postProcessMessageBeforeSend() をオーバーライドする必要があります。

リスナーキュー

リスナーコンテナーは、デフォルトで、起動時に欠落しているキューを再宣言するようになりました。これらの再宣言を防ぐために、新しい auto-declare 属性が <rabbit:listener-container> に追加されました。auto-delete キューを参照してください。

RabbitTemplatemandatory および connectionFactorySelector 式

mandatoryExpressionsendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression SpEL Expression のプロパティが RabbitTemplate に追加されました。mandatoryExpression は、ReturnCallback が使用されている場合に、各リクエストメッセージに対して mandatory ブール値を評価するために使用されます。相関するパブリッシャーの確認と return を参照してください。sendConnectionFactorySelectorExpression および receiveConnectionFactorySelectorExpression は、AbstractRoutingConnectionFactory が指定されている場合に使用され、各 AMQP プロトコル対話操作の実行時にターゲット ConnectionFactory の lookupKey を決定します。ルーティング接続ファクトリを参照してください。

リスナーとルーティング接続ファクトリ

ルーティング接続ファクトリを使用して SimpleMessageListenerContainer を構成し、キュー名に基づく接続選択を有効にすることができます。ルーティング接続ファクトリを参照してください。

RabbitTemplateRecoveryCallback オプション

retryTemplate.execute() で使用するために recoveryCallback プロパティが追加されました。再試行機能の追加を参照してください。

MessageConversionException 変更

この例外は AmqpException のサブクラスになりました。次のコードを検討してください。

try {
    template.convertAndSend("thing1", "thing2", "cat");
}
catch (AmqpException e) {
	...
}
catch (MessageConversionException e) {
	...
}

2 番目の catch ブロックには到達できなくなったため、すべてをキャッチする AmqpException catch ブロックの上に移動する必要があります。

RabbitMQ 3.4 の互換性

Spring AMQP は、直接返信を含め、RabbitMQ 3.4 と互換性を持つようになりました。詳細については、互換性および RabbitMQ 直接返信を参照してください。

ContentTypeDelegatingMessageConverter が追加されました

MessageProperties の contentType プロパティに基づいて、使用する MessageConverter を選択するために ContentTypeDelegatingMessageConverter が導入されました。詳細については、メッセージコンバーターを参照してください。