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
キューを参照してください。
RabbitTemplate
: mandatory
および connectionFactorySelector
式
mandatoryExpression
、sendConnectionFactorySelectorExpression
、receiveConnectionFactorySelectorExpression
SpEL Expression のプロパティが RabbitTemplate
に追加されました。mandatoryExpression
は、ReturnCallback
が使用されている場合に、各リクエストメッセージに対して mandatory
ブール値を評価するために使用されます。相関するパブリッシャーの確認と return を参照してください。sendConnectionFactorySelectorExpression
および receiveConnectionFactorySelectorExpression
は、AbstractRoutingConnectionFactory
が指定されている場合に使用され、各 AMQP プロトコル対話操作の実行時にターゲット ConnectionFactory
の lookupKey
を決定します。ルーティング接続ファクトリを参照してください。
リスナーとルーティング接続ファクトリ
ルーティング接続ファクトリを使用して SimpleMessageListenerContainer
を構成し、キュー名に基づく接続選択を有効にすることができます。ルーティング接続ファクトリを参照してください。
RabbitTemplate
: RecoveryCallback
オプション
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
が導入されました。詳細については、メッセージコンバーターを参照してください。