自 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 或更高版本時,您不得設定此屬性。
自動宣告佇列和其他項目
先前,在宣告佇列、交換器和繫結時,您無法定義哪個連線工廠用於宣告。每個 RabbitAdmin
都會使用其連線宣告所有元件。
從此版本開始,您現在可以將宣告限制於特定的 RabbitAdmin
實例。請參閱 條件式宣告。
AMQP Remoting
現在提供使用 Spring remoting 技術的設施,使用 AMQP 作為 RPC 呼叫的傳輸方式。如需更多資訊,請參閱 [remoting]