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 條件

監聽器容器變更

預設情況下,即使確認模式為手動,帶有致命異常的訊息現在也會被拒絕,並且不會重新入隊。有關更多資訊,請參閱 異常處理

現在可以使用 Micrometer Timer 監控監聽器效能。有關更多資訊,請參閱 監控監聽器效能

@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 日誌追加器變更

Log4J 和 Logback 的 AmqpAppender 現在支援 verifyHostname SSL 選項。

此外,這些追加器現在可以配置為不將 MDC 條目新增為頭部。已引入 addMdcAsHeaders 布林選項來配置此類行為。

追加器現在支援 SaslConfig 屬性。

有關更多資訊,請參閱 日誌子系統 AMQP 追加器

MessageListenerAdapter 變更

MessageListenerAdapter 現在提供了一個新的 buildListenerArguments(Object, Channel, Message) 方法來構建一個引數陣列,以傳遞給目標監聽器,而舊方法已被棄用。有關更多資訊,請參閱 MessageListenerAdapter

[[exchange/queue-declaration-changes]] == 交換/佇列宣告變更

ExchangeBuilderQueueBuilder 流式 API 用於透過 RabbitAdmin 宣告 ExchangeQueue 物件,現在支援“知名”引數。有關更多資訊,請參閱 佇列和交換機的 Builder API

RabbitAdmin 有一個新屬性 explicitDeclarationsOnly。有關更多資訊,請參閱 條件宣告

連線工廠的更改

CachingConnectionFactory 有一個新屬性 shuffleAddresses。當提供經紀節點地址列表時,在建立連線之前,該列表將被打亂,以便嘗試連線的順序是隨機的。有關更多資訊,請參閱 連線到叢集

使用釋出者確認和返回時,回撥現在在連線工廠的 executor 上呼叫。這避免瞭如果在回撥中執行 Rabbit 操作,amqp-clients 庫中可能出現的死鎖。有關更多資訊,請參閱 關聯的釋出者確認和返回

此外,釋出者確認型別現在使用 ConfirmType 列舉指定,而不是兩個互斥的 setter 方法。

當啟用 SSL 時,RabbitConnectionFactoryBean 現在預設使用 TLS 1.2。有關更多資訊,請參閱 RabbitConnectionFactoryBean 和配置 SSL

新的 MessagePostProcessor 類

添加了 DeflaterPostProcessorInflaterPostProcessor 類,分別用於在訊息內容編碼設定為 deflate 時支援壓縮和解壓縮。

其他變更

Declarables 物件(用於宣告多個佇列、交換機、繫結)現在為每種型別提供了過濾的 getter。有關更多資訊,請參閱 宣告交換機、佇列和繫結的集合

您現在可以在 RabbitAdmin 處理宣告之前自定義每個 Declarable bean。有關更多資訊,請參閱 交換機、佇列和繫結的自動宣告

QueueBuilder 中添加了 singleActiveConsumer() 以設定 x-single-active-consumer 佇列引數。有關更多資訊,請參閱 佇列和交換機的 Builder API

型別為 Class<?> 的出站頭部值現在使用 getName() 而不是 toString() 進行對映。有關更多資訊,請參閱 訊息屬性轉換器

現在支援恢復失敗的生產者建立的批次。有關更多資訊,請參閱 帶批次監聽器的重試

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