1.7 相較於 1.6 的變更

AMQP 客戶端庫

Spring AMQP 現在使用 RabbitMQ 團隊提供的新版本 amqp-client 庫 4.0.x。此客戶端預設配置了自動恢復。參見 RabbitMQ 自動連線/拓撲恢復

4.0.x 客戶端預設啟用自動恢復。雖然與此特性相容,但 Spring AMQP 有自己的恢復機制,通常不需要客戶端的恢復特性。我們建議停用 amqp-client 自動恢復,以避免在 Broker 可用但連線尚未恢復時出現 AutoRecoverConnectionNotCurrentlyOpenException 例項。從 1.7.1 版本開始,Spring AMQP 預設停用此功能,除非您明確建立自己的 RabbitMQ 連線工廠並將其提供給 CachingConnectionFactory。由 RabbitConnectionFactoryBean 建立的 RabbitMQ ConnectionFactory 例項也預設停用了此選項。

Log4j 2 升級

Log4j 2 的最低版本(用於 AmqpAppender)現在是 2.7。該框架不再相容以前的版本。參見 日誌子系統 AMQP Appender 瞭解更多資訊。

Logback Appender

此 Appender 預設不再捕獲呼叫者資料(方法、行號)。您可以透過設定配置選項 includeCallerData 來重新啟用它。參見 日誌子系統 AMQP Appender 瞭解有關可用日誌 Appender 的資訊。

Spring Retry 升級

Spring Retry 的最低版本現在是 1.2。該框架不再相容以前的版本。

關閉行為

現在您可以將 forceCloseChannel 設定為 true,這樣如果容器執行緒在 shutdownTimeout 內沒有響應關閉操作,通道將被強制關閉,導致任何未 ack 的訊息重新入隊。參見 訊息監聽器容器配置 瞭解更多資訊。

FasterXML Jackson 升級

Jackson 的最低版本現在是 2.8。該框架不再相容以前的版本。

JUnit @Rules

以前由框架內部使用的規則現在已在名為 spring-rabbit-junit 的單獨 jar 包中提供。參見 JUnit4 @Rules 瞭解更多資訊。

容器條件回滾

當您使用外部事務管理器(例如 JDBC)時,現在當您為容器提供事務屬性時,支援基於規則的回滾。當您使用事務通知時,它現在也更加靈活。

連線命名策略

現在提供了一個新的 ConnectionNameStrategy,用於從 AbstractConnectionFactory 中填充目標 RabbitMQ 連線的應用程式特定標識。參見 連線和資源管理 瞭解更多資訊。

監聽器容器變更

事務回滾行為

現在您可以配置事務回滾時的訊息重新入隊行為,使其保持一致,無論是否配置了事務管理器。參見 關於接收訊息回滾的注意事項 瞭解更多資訊。