2.2 版自 2.1 版以來的變更
本節描述 2.1 版和 2.2 版之間的變更。
套件變更
以下類別/介面已從 org.springframework.amqp.rabbit.core.support
移動到 org.springframework.amqp.rabbit.batch
-
BatchingStrategy
-
MessageBatch
-
SimpleBatchingStrategy
此外,ListenerExecutionFailedException
已從 org.springframework.amqp.rabbit.listener.exception
移動到 org.springframework.amqp.rabbit.support
。
依賴性變更
JUnit (4) 現在是可選的依賴性,並且不再作為傳遞依賴性出現。
spring-rabbit-junit
模組現在是 spring-rabbit-test
模組中的 compile 依賴性,以便在僅使用單個 spring-rabbit-test
時,獲得 AMQP 組件的完整堆疊測試工具,從而獲得更好的目標應用程式開發體驗。
[[-breaking-api-changes]] == "破壞性" API 變更
JUnit (5) RabbitAvailableCondition.getBrokerRunning()
現在返回 BrokerRunningSupport
實例,而不是取決於 JUnit 4 的 BrokerRunning
。它具有相同的 API,因此只需變更任何參考的類別名稱即可。有關更多資訊,請參閱 JUnit5 條件。
@RabbitListener 變更
您現在可以在每個監聽器上配置 executor
,覆寫工厂設定,以更輕鬆地識別與監聽器關聯的執行緒。您現在可以使用註解的 ackMode
屬性覆寫容器工厂的 acknowledgeMode
屬性。有關更多資訊,請參閱 覆寫容器工厂屬性。
當使用 批次處理 時,@RabbitListener
方法現在可以在一次呼叫中接收完整的訊息批次,而不是一次一個地接收它們。
當一次一個地接收批次訊息時,最後一個訊息的 isLastInBatch
訊息屬性設定為 true。
此外,接收到的批次訊息現在包含 amqp_batchSize
標頭。
監聽器也可以使用在 SimpleMessageListenerContainer
中建立的批次,即使該批次不是由生產者建立的。有關更多資訊,請參閱 選擇容器。
Jackson2JsonMessageConverter
現在支援 Spring Data Projection 介面。有關更多資訊,請參閱 使用 Spring Data Projection 介面。
如果沒有 contentType
屬性,或者它是預設值 (application/octet-string
),則 Jackson2JsonMessageConverter
現在假設內容為 JSON。有關更多資訊,請參閱 從 Message
轉換。
同樣地,如果沒有 contentType
屬性,或者它是預設值 (application/octet-string
),則 Jackson2XmlMessageConverter
現在假設內容為 XML。有關更多資訊,請參閱 Jackson2XmlMessageConverter
。
當 @RabbitListener
方法傳回結果時,bean 和 Method
現在可在回覆訊息屬性中使用。這允許配置 beforeSendReplyMessagePostProcessor
,例如,在回覆中設定標頭以指示在伺服器上調用了哪個方法。有關更多資訊,請參閱 回覆管理。
您現在可以配置 ReplyPostProcessor
以在傳送回覆訊息之前對其進行修改。有關更多資訊,請參閱 回覆管理。
AMQP 日誌記錄 Appenders 變更
Log4J 和 Logback AmqpAppender
現在支援 verifyHostname
SSL 選項。
此外,現在可以將這些 appender 配置為不將 MDC 條目新增為標頭。已引入 addMdcAsHeaders
布林選項以配置此行為。
appenders 現在支援 SaslConfig
屬性。
有關更多資訊,請參閱 日誌子系統 AMQP Appenders。
MessageListenerAdapter 變更
MessageListenerAdapter
現在提供新的 buildListenerArguments(Object, Channel, Message)
方法來建構要傳遞到目標監聽器的引數陣列,而舊的方法已棄用。有關更多資訊,請參閱 MessageListenerAdapter
。
[[exchange/queue-declaration-changes]] == Exchange/Queue 宣告變更
用於建立 Exchange
和 Queue
物件以供 RabbitAdmin
宣告的 ExchangeBuilder
和 QueueBuilder
流暢 API 現在支援「眾所周知」的引數。有關更多資訊,請參閱 佇列和 Exchange 的 Builder API。
RabbitAdmin
具有新的屬性 explicitDeclarationsOnly
。有關更多資訊,請參閱 條件式宣告。
連線工厂變更
CachingConnectionFactory
具有新的屬性 shuffleAddresses
。當提供 Broker 節點位址列表時,該列表將在建立連線之前被打亂,以便嘗試連線的順序是隨機的。有關更多資訊,請參閱 連線到叢集。
當使用發佈者確認和回傳時,現在會在連線工厂的 executor
上調用回呼。如果您從回呼中執行 Rabbit 操作,這可以避免 amqp-clients
程式庫中可能發生的死鎖。有關更多資訊,請參閱 關聯的發佈者確認和回傳。
此外,發佈者確認類型現在使用 ConfirmType
列舉而不是兩個互斥的 setter 方法來指定。
啟用 SSL 時,RabbitConnectionFactoryBean
現在預設使用 TLS 1.2。有關更多資訊,請參閱 RabbitConnectionFactoryBean
和配置 SSL。
新的 MessagePostProcessor 類別
新增了 DeflaterPostProcessor
和 InflaterPostProcessor
類別,以在訊息 content-encoding 設定為 deflate
時分別支援壓縮和解壓縮。
其他變更
Declarables
物件(用於宣告多個佇列、Exchange、綁定)現在具有每個類型的篩選器 getter。有關更多資訊,請參閱 宣告 Exchange、佇列和綁定的集合。
您現在可以在 RabbitAdmin
處理宣告之前自訂每個 Declarable
bean。有關更多資訊,請參閱 自動宣告 Exchange、佇列和綁定。
singleActiveConsumer()
已新增至 QueueBuilder
以設定 x-single-active-consumer
佇列引數。有關更多資訊,請參閱 佇列和 Exchange 的 Builder API。
現在使用 getName()
而不是 toString()
映射類型為 Class<?>
的輸出標頭。有關更多資訊,請參閱 訊息屬性轉換器。
現在支援復原失敗的生產者建立的批次。有關更多資訊,請參閱 使用批次監聽器重試。