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 選項。請參閱配置底層客戶端連線工廠

使用 CachingConnectionFactory

CachingConnectionFactory 現在允許將 connectionTimeout 設定為屬性或名稱空間中的屬性。它在底層 RabbitMQ ConnectionFactory 上設定該屬性。請參閱配置底層客戶端連線工廠

日誌附加器

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

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

附加器還支援在傳送前修改 Message —— 例如,允許新增自定義標頭。子類應重寫 postProcessMessageBeforeSend()

監聽器佇列

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

RabbitTemplate: mandatoryconnectionFactorySelector 表示式

已將 mandatoryExpressionsendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression SpEL 表示式屬性新增到 RabbitTemplate。當使用 ReturnCallback 時,mandatoryExpression 用於針對每個請求訊息評估 mandatory 布林值。請參閱相關釋出者確認和返回。當提供 AbstractRoutingConnectionFactory 時,sendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression 用於在每個 AMQP 協議互動操作的執行時確定目標 ConnectionFactorylookupKey。請參閱路由連線工廠

監聽器和路由連線工廠

您可以配置具有路由連線工廠的 SimpleMessageListenerContainer,以根據佇列名稱啟用連線選擇。請參閱路由連線工廠

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。有關更多資訊,請參閱訊息轉換器

© . This site is unofficial and not affiliated with VMware.