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
模組中的一個 編譯時 依賴項,以便在僅使用單個 spring-rabbit-test
即可獲得 AMQP 元件的完整測試工具棧時,提供更好的目標應用開發體驗。
[[-breaking-api-changes]] == API 破壞性變更
JUnit (5) 的 RabbitAvailableCondition.getBrokerRunning()
現在返回一個 `BrokerRunningSupport` 例項,而不是依賴於 JUnit 4 的 `BrokerRunning`。它們擁有相同的 API,因此只需更改任何引用的類名即可。更多資訊請參見 JUnit5 Conditions。
@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 日誌 Appender 變更
Log4J 和 Logback 的 AmqpAppender
現在支援 verifyHostname
SSL 選項。
此外,這些 appender 現在可以配置為不將 MDC 條目作為頭資訊新增。已引入 addMdcAsHeaders
布林選項來配置這種行為。
這些 appender 現在支援 SaslConfig
屬性。
更多資訊請參見 日誌子系統 AMQP Appender。
MessageListenerAdapter 變更
MessageListenerAdapter
現在提供了一個新的 buildListenerArguments(Object, Channel, Message)
方法來構建傳遞給目標監聽器的引數陣列,舊的方法已被棄用。更多資訊請參見 MessageListenerAdapter
。
[[exchange/queue-declaration-changes]] == 交換機/佇列宣告變更
用於由 RabbitAdmin
宣告 Exchange
和 Queue
物件的 ExchangeBuilder
和 QueueBuilder
流式 API 現在支援“已知”引數。更多資訊請參見 佇列和交換機的 Builder API。
RabbitAdmin
有一個新的屬性 explicitDeclarationsOnly
。更多資訊請參見 條件宣告。
連線工廠變更
CachingConnectionFactory
有一個新的屬性 shuffleAddresses
。當提供 broker 節點地址列表時,列表在建立連線之前會被打亂,從而使連線嘗試的順序隨機化。更多資訊請參見 連線到叢集。
使用 Publisher confirms 和 returns 時,回撥現在在連線工廠的 executor
上呼叫。這避免瞭如果在回撥中執行 rabbit 操作可能導致的 amqp-clients
庫中的死鎖。更多資訊請參見 關聯的 Publisher Confirms 和 Returns。
此外,publisher confirm 型別現在使用 ConfirmType
列舉指定,而不是兩個互斥的 setter 方法。
啟用 SSL 時,RabbitConnectionFactoryBean
現在預設使用 TLS 1.2。更多資訊請參見 RabbitConnectionFactoryBean
和配置 SSL。
新的 MessagePostProcessor 類
已新增 DeflaterPostProcessor
和 InflaterPostProcessor
類,分別用於在訊息的 content-encoding
設定為 deflate
時支援壓縮和解壓縮。
其他變更
Declarables
物件(用於宣告多個佇列、交換機、繫結)現在為每種型別提供了過濾的 getter 方法。更多資訊請參見 宣告交換機、佇列和繫結的集合。
現在可以在 RabbitAdmin
處理宣告之前自定義每個 Declarable
bean。更多資訊請參見 自動宣告交換機、佇列和繫結。
已向 QueueBuilder
新增 singleActiveConsumer()
方法,用於設定 x-single-active-consumer
佇列引數。更多資訊請參見 佇列和交換機的 Builder API。
型別為 Class>
的出站頭資訊現在使用 getName()
而非 toString()
進行對映。更多資訊請參見 訊息屬性轉換器。
現在支援恢復生產者建立的失敗批次。更多資訊請參見 批處理監聽器重試。