自 1.1 以來 1.2 的變更

RabbitMQ 版本

Spring AMQP 現在預設使用 RabbitMQ 3.1.x (但保留與舊版本的相容性)。某些功能已被標記為過時,因為 RabbitMQ 3.1.x 不再支援這些功能,包括聯合交換器 (federated exchanges) 和 RabbitTemplate 上的 immediate 屬性。

Rabbit Admin

RabbitAdmin 現在提供一個選項,允許在宣告失敗時,交換器、佇列和繫結宣告繼續進行。先前,所有宣告會在失敗時停止。透過設定 ignore-declaration-exceptions,此類例外狀況會被記錄 (在 WARN 層級),但後續宣告會繼續進行。一個可能適用此功能的例子是,當佇列宣告因略微不同的 ttl 設定而失敗時,這通常會阻止其他宣告繼續進行。

RabbitAdmin 現在提供一個額外的方法,稱為 getQueueProperties()。您可以使用此方法判斷佇列是否存在於 Broker 上 (對於不存在的佇列會傳回 null)。此外,它還會傳回佇列中目前的訊息數量以及目前的消費者數量。

Rabbit Template

先前,當 …​sendAndReceive() 方法與固定的回覆佇列一起使用時,會使用兩個自訂標頭來處理關聯資料,以及保留和還原回覆佇列資訊。在此版本中,預設會使用標準訊息屬性 (correlationId),但您可以指定要改為使用的自訂屬性。此外,巢狀 replyTo 資訊現在會保留在範本內部,而不是使用自訂標頭。

immediate 屬性已被標記為過時。當使用 RabbitMQ 3.0.x 或更高版本時,您不得設定此屬性。

JSON 訊息轉換器

現在提供 Jackson 2.x MessageConverter,以及現有的使用 Jackson 1.x 的轉換器。

自動宣告佇列和其他項目

先前,在宣告佇列、交換器和繫結時,您無法定義哪個連線工廠用於宣告。每個 RabbitAdmin 都會使用其連線宣告所有元件。

從此版本開始,您現在可以將宣告限制於特定的 RabbitAdmin 實例。請參閱 條件式宣告

AMQP Remoting

現在提供使用 Spring remoting 技術的設施,使用 AMQP 作為 RPC 呼叫的傳輸方式。如需更多資訊,請參閱 [remoting]

請求的心跳

許多使用者要求在 Spring AMQP CachingConnectionFactory 上公開底層用戶端連線工廠的 requestedHeartBeats 屬性。現在已提供此功能。先前,必須將 AMQP 用戶端工廠設定為個別的 bean,並在 CachingConnectionFactory 中提供對它的參考。