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
屬性 (PERSISTENT
或 NON_PERSISTENT
,預設值:PERSISTENT
)。先前,所有 log4j 訊息都是 PERSISTENT
。
appender 也支援在傳送之前修改 Message
— 例如,允許新增自訂標頭。子類別應覆寫 postProcessMessageBeforeSend()
。
監聽器佇列
現在,監聽器容器預設會在啟動期間重新宣告任何遺失的佇列。已將新的 auto-declare
屬性新增至 <rabbit:listener-container>
,以防止這些重新宣告。請參閱 auto-delete
佇列。
RabbitTemplate
:mandatory
和 connectionFactorySelector
運算式
已將 mandatoryExpression
、sendConnectionFactorySelectorExpression
和 receiveConnectionFactorySelectorExpression
SpEL 運算式的屬性新增至 RabbitTemplate
。當使用 ReturnCallback
時,mandatoryExpression
用於針對每個請求訊息評估 mandatory
布林值。請參閱 相關的發布者確認和退回。當提供 AbstractRoutingConnectionFactory
時,會使用 sendConnectionFactorySelectorExpression
和 receiveConnectionFactorySelectorExpression
,以在每次 AMQP 通訊協定互動操作時,判斷目標 ConnectionFactory
的 lookupKey
。請參閱 [routing-connection-factory]。
監聽器和路由連線工廠
您可以設定具有路由連線工廠的 SimpleMessageListenerContainer
,以根據佇列名稱啟用連線選擇。請參閱 [routing-connection-factory]。
RabbitTemplate
:RecoveryCallback
選項
已新增 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
。如需更多資訊,請參閱 訊息轉換器。