1.6 版自 1.5 版以來的變更
測試支援
現在提供新的測試支援程式庫。請參閱 測試支援 以取得更多資訊。
Builder
現在提供 Builder,為設定 Queue
和 Exchange
物件提供流暢的 API。請參閱 佇列和交換器的 Builder API 以取得更多資訊。
命名空間變更
連線 Factory
您現在可以將 thread-factory
新增至連線 Factory Bean 宣告中,例如,為 amqp-client
程式庫建立的執行緒命名。請參閱 連線和資源管理 以取得更多資訊。
當您使用 CacheMode.CONNECTION
時,現在可以限制允許的連線總數。請參閱 連線和資源管理 以取得更多資訊。
佇列定義
您現在可以為匿名佇列提供命名策略。請參閱 AnonymousQueue
以取得更多資訊。
監聽器容器變更
閒置訊息監聽器偵測
您現在可以設定監聽器容器,以便在閒置時發布 ApplicationEvent
實例。請參閱 偵測閒置的非同步消費者 以取得更多資訊。
不符的佇列偵測
預設情況下,當監聽器容器啟動時,如果偵測到具有不符屬性或引數的佇列,容器會記錄例外狀況,但會繼續監聽。容器現在有一個名為 mismatchedQueuesFatal
的屬性,如果啟動期間偵測到問題,此屬性會阻止容器 (和內容) 啟動。如果在稍後偵測到問題 (例如從連線故障恢復後),它也會停止容器。請參閱 訊息監聽器容器設定 以取得更多資訊。
預設錯誤處理常式
預設錯誤處理常式 (ConditionalRejectingErrorHandler
) 現在將無法復原的 @RabbitListener
例外狀況視為嚴重錯誤。請參閱 例外處理 以取得更多資訊。
AutoDeclare
和 RabbitAdmin
實例
請參閱 訊息監聽器容器設定 (autoDeclare
),以了解該選項在使用應用程式內容中的 RabbitAdmin
實例方面的一些語意變更。
AmqpTemplate
:接收與逾時
已為 AmqpTemplate
及其 RabbitTemplate
實作引入許多新的具有 timeout
的 receive()
方法。請參閱 輪詢消費者 以取得更多資訊。
使用 AsyncRabbitTemplate
已引入新的 AsyncRabbitTemplate
。此範本提供許多傳送和接收方法,其中傳回值為 ListenableFuture
,稍後可用於同步或非同步取得結果。請參閱 非同步 Rabbit 範本 以取得更多資訊。
RabbitTemplate
變更
1.4.1 引入了在 Broker 支援時使用 直接回覆到 的能力。這比為每個回覆使用暫時佇列更有效率。此版本可讓您覆寫此預設行為,並透過將 useTemporaryReplyQueues
屬性設定為 true
來使用暫時佇列。請參閱 RabbitMQ 直接回覆到 以取得更多資訊。
RabbitTemplate
現在支援 user-id-expression
(使用 Java 設定時為 userIdExpression
)。請參閱 已驗證使用者 ID RabbitMQ 文件 和 已驗證使用者 ID 以取得更多資訊。
訊息屬性
使用 CorrelationId
correlationId
訊息屬性現在可以是 String
。請參閱 訊息屬性轉換器 以取得更多資訊。
長字串標頭
先前,DefaultMessagePropertiesConverter
將長度超過長字串限制 (預設為 1024) 的標頭「轉換」為 DataInputStream
(實際上,它參考了 LongString
實例的 DataInputStream
)。在輸出時,此標頭未轉換 (除了轉換為 String,例如,透過在串流上呼叫 toString()
得到的 java.io.DataInputStream@1d057a39
)。
在此版本中,預設情況下,長 LongString
實例現在會保留為 LongString
實例。您可以使用 getBytes[]
、toString()
或 getStream()
方法來存取內容。大型傳入的 LongString
現在在輸出時也會正確地「轉換」。
請參閱 訊息屬性轉換器 以取得更多資訊。
RabbitAdmin
變更
宣告失敗
先前,ignoreDeclarationFailures
旗標僅對通道上的 IOException
(例如不符的引數) 生效。現在它對任何例外狀況 (例如 TimeoutException
) 都有效。此外,每當宣告失敗時,都會發布 DeclarationExceptionEvent
。RabbitAdmin
最後的宣告事件也可作為屬性 lastDeclarationExceptionEvent
使用。請參閱 設定 Broker 以取得更多資訊。
@RabbitListener
變更
每個 Bean 的多個容器
當您使用 Java 8 或更新版本時,現在可以將多個 @RabbitListener
註解新增至 @Bean
類別或其方法。當使用 Java 7 或更早版本時,您可以使用 @RabbitListeners
容器註解來提供相同的功能。請參閱 @Repeatable
@RabbitListener
以取得更多資訊。
@SendTo
SpEL 運算式
對於沒有 replyTo
屬性的路由回覆,@SendTo
現在可以是針對請求/回覆評估的 SpEL 運算式。請參閱 回覆管理 以取得更多資訊。
@QueueBinding
改善
您現在可以在 @QueueBinding
註解中指定佇列、交換器和綁定的引數。@QueueBinding
現在支援標頭交換器。請參閱 註解驅動的監聽器端點 以取得更多資訊。
延遲訊息交換
Spring AMQP 現在對 RabbitMQ 延遲訊息交換外掛程式提供一流的支援。請參閱 延遲訊息交換 以取得更多資訊。
交換器內部旗標
任何 Exchange
定義現在都可以標示為 internal
,而 RabbitAdmin
在宣告交換器時會將值傳遞給 Broker。請參閱 設定 Broker 以取得更多資訊。
CachingConnectionFactory
變更
CachingConnectionFactory
快取統計資訊
CachingConnectionFactory
現在在執行階段和透過 JMX 提供快取屬性。請參閱 執行階段快取屬性 以取得更多資訊。
存取底層 RabbitMQ 連線 Factory
已新增新的 Getter 以提供對底層 Factory 的存取。例如,您可以使用此 Getter 來新增自訂連線屬性。請參閱 新增自訂用戶端連線屬性 以取得更多資訊。
通道快取
預設通道快取大小已從 1 增加到 25。請參閱 連線和資源管理 以取得更多資訊。
此外,SimpleMessageListenerContainer
不再調整快取大小以至少與 concurrentConsumers
的數量一樣大,因為容器消費者通道永遠不會快取,這是多餘的。
Java 還原序列化
當您使用 Java 還原序列化時,現在可以設定允許類別的「允許清單」。如果您接受來自不受信任來源的具有序列化 Java 物件的訊息,您應該考慮建立允許清單。請參閱 Java 還原序列化 以取得更多資訊。
JSON MessageConverter
JSON 訊息轉換器的改進現在允許使用訊息標頭中沒有型別資訊的訊息。請參閱 用於註解方法的訊息轉換 和 [json-message-converter] 以取得更多資訊。