1.2 相較 1.1 的變化
RabbitMQ 版本
Spring AMQP 現在預設使用 RabbitMQ 3.1.x(但保留與早期版本的相容性)。由於 RabbitMQ 3.1.x 不再支援某些功能,因此添加了相關的棄用,例如聯合交換機和 RabbitTemplate 上的 immediate 屬性。
Rabbit Admin
RabbitAdmin 現在提供了一個選項,允許在宣告失敗時繼續進行交換機、佇列和繫結宣告。以前,所有宣告都會在失敗時停止。透過設定 ignore-declaration-exceptions,此類異常將被記錄(在 WARN 級別),但後續宣告將繼續。一個有用的例子是,當佇列宣告因略有不同的 ttl 設定而失敗時,這通常會阻止其他宣告繼續進行。
RabbitAdmin 現在提供了一個名為 getQueueProperties() 的額外方法。您可以使用此方法確定佇列是否存在於代理上(對於不存在的佇列返回 null)。此外,它還返回佇列中當前的訊息數量以及當前的消費者數量。
Rabbit 模板
以前,當 …sendAndReceive() 方法與固定回覆佇列一起使用時,會使用兩個自定義頭來儲存關聯資料以及保留和恢復回覆佇列資訊。在此版本中,預設使用標準訊息屬性 (correlationId),儘管您可以指定一個自定義屬性來代替。此外,巢狀的 replyTo 資訊現在在模板內部保留,而不是使用自定義頭。
immediate 屬性已棄用。當使用 RabbitMQ 3.0.x 或更高版本時,您不得設定此屬性。
佇列和其他專案的自動宣告
以前,在宣告佇列、交換機和繫結時,您無法定義用於宣告的連線工廠。每個 RabbitAdmin 都使用其連線宣告所有元件。
從這個版本開始,您現在可以將宣告限制到特定的 RabbitAdmin 例項。請參閱條件宣告。
AMQP 遠端呼叫
現在提供了使用 Spring 遠端呼叫技術的功能,使用 AMQP 作為 RPC 呼叫的傳輸。有關更多資訊,請參閱使用 AMQP 的 Spring 遠端呼叫。