1.4 版之後 1.3 版的變更

@RabbitListener 註解

POJO 監聽器可以使用 @RabbitListener 註解,並透過 @EnableRabbit<rabbit:annotation-driven /> 啟用。此功能需要 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) 的原因。請參閱 相關的發布者確認和退回

已新增 RabbitConnectionFactoryBean

RabbitConnectionFactoryBean 建立 CachingConnectionFactory 使用的底層 RabbitMQ ConnectionFactory。這可以使用 Spring 的依賴注入來設定 SSL 選項。請參閱 [connection-factory]

使用 CachingConnectionFactory

CachingConnectionFactory 現在允許將 connectionTimeout 設定為屬性或命名空間中的屬性。它會在底層 RabbitMQ ConnectionFactory 上設定屬性。請參閱 [connection-factory]

Log Appender

已引入 Logback org.springframework.amqp.rabbit.logback.AmqpAppender。它提供與 org.springframework.amqp.rabbit.log4j.AmqpAppender 類似的選項。如需更多資訊,請參閱這些類別的 JavaDoc。

Log4j AmqpAppender 現在支援 deliveryMode 屬性 (PERSISTENTNON_PERSISTENT,預設值:PERSISTENT)。先前,所有 log4j 訊息都是 PERSISTENT

appender 也支援在傳送之前修改 Message — 例如,允許新增自訂標頭。子類別應覆寫 postProcessMessageBeforeSend()

監聽器佇列

現在,監聽器容器預設會在啟動期間重新宣告任何遺失的佇列。已將新的 auto-declare 屬性新增至 <rabbit:listener-container>,以防止這些重新宣告。請參閱 auto-delete 佇列

RabbitTemplatemandatoryconnectionFactorySelector 運算式

已將 mandatoryExpressionsendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression SpEL 運算式的屬性新增至 RabbitTemplate。當使用 ReturnCallback 時,mandatoryExpression 用於針對每個請求訊息評估 mandatory 布林值。請參閱 相關的發布者確認和退回。當提供 AbstractRoutingConnectionFactory 時,會使用 sendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression,以在每次 AMQP 通訊協定互動操作時,判斷目標 ConnectionFactorylookupKey。請參閱 [routing-connection-factory]

監聽器和路由連線工廠

您可以設定具有路由連線工廠的 SimpleMessageListenerContainer,以根據佇列名稱啟用連線選擇。請參閱 [routing-connection-factory]

RabbitTemplateRecoveryCallback 選項

已新增 recoveryCallback 屬性,以用於 retryTemplate.execute() 中。請參閱 新增重試功能

MessageConversionException 變更

此例外現在是 AmqpException 的子類別。請考慮以下程式碼

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

第二個 catch 區塊不再可到達,需要將其移至 catch-all AmqpException catch 區塊之上。

RabbitMQ 3.4 相容性

Spring AMQP 現在與 RabbitMQ 3.4 相容,包括直接回覆至。如需更多資訊,請參閱 相容性RabbitMQ 直接回覆至

已新增 ContentTypeDelegatingMessageConverter

已引入 ContentTypeDelegatingMessageConverter,以根據 MessageProperties 中的 contentType 屬性,選擇要使用的 MessageConverter。如需更多資訊,請參閱 訊息轉換器