View a markdown version of this page

RabbitMQ 4.3 - Amazon MQ

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

RabbitMQ 4.3

Amazon MQ 現在在所有支援的執行個體大小中支援 RabbitMQ mq.m7g 執行個體類型的 RabbitMQ 4 個發行系列中的 4.3。 RabbitMQ 4.3 引入規定人數佇列增強功能、新的交換類型,並完成移除在舊版 4.x 版本中已棄用的數個功能。如需此版本的詳細資訊,請參閱 GitHub RabbitMQ網站上的 4.3.0 版本備註。

重要

Amazon MQ 僅支援從 RabbitMQ 4.2 升級到 RabbitMQ 4.3。您無法直接從 RabbitMQ 3.13 升級到 4.3。如果您的代理程式執行 RabbitMQ 3.13,您必須先升級至 RabbitMQ 4.2,才能升級至 4.3。

在 RabbitMQ Amazon MQ 上中斷 4.3 中的變更

下列開放原始碼變更可能會在升級至 4.3 RabbitMQ 時影響您的應用程式。升級代理程式之前,請檢閱這些變更。

  • 暫時性非獨佔佇列遭到拒絕:宣告非耐久和非獨佔的佇列現在會傳回錯誤。Amazon MQ for RabbitMQ 4.3 已移除此功能的支援。請改在RabbitMQ網站上使用具有佇列 TTL 的持久性佇列、獨佔佇列或持久性佇列。

  • 全域 QoS 遭拒:basic.qos使用 呼叫 global=true 現在會傳回頻道錯誤。Amazon MQ for RabbitMQ 4.3 已移除此功能的支援。請改為使用每個消費者預先擷取 (global=false)。如需此變更的詳細資訊,請參閱 RabbitMQ 網站上的移除全域 QoS。

  • 移除傳統佇列 v1 儲存:宣告具有 的佇列x-queue-version=1現在會傳回錯誤。傳統佇列 v2 是唯一支援的儲存引擎。Amazon MQ 自 3.12 RabbitMQ 起強制執行 v2,因此現有佇列不會受到影響。

  • 消費者逾時不再適用於傳統佇列:傳統佇列不再評估消費者逾時。如果消費者卡在應用程式層級, RabbitMQ 不會自動重新傳遞訊息。consumer_timeout 設定會繼續套用至規定人數佇列。如果您的應用程式依賴傳統佇列的取用者逾時,請考慮遷移至規定人數佇列或實作應用程式層級活動訊號檢查。如需此變更的詳細資訊,請參閱 GitHub RabbitMQ網站上的 4.3.0 版本備註。

Amazon MQ RabbitMQ 4.3 版中的新功能和增強功能

  • 配額佇列嚴格優先順序:配額佇列現在支援最高 32 個層級 (0–31) 的嚴格優先順序排序,並使用x-max-priority佇列引數啟用。優先順序較高的訊息一律會在優先順序較低的訊息之前傳送。這會取代 4.2 中引進的 2 RabbitMQ 層級比率型交付。如需規定人數佇列優先順序的詳細資訊,請參閱RabbitMQ網站上的規定人數佇列優先順序。

  • 配額佇列延遲重試:配額佇列支援延遲重試,可設定增加退避。您可以使用佇列引數或政策金鑰 (delayed-retry-type、delayed-retry-min、) 來設定重試行為delayed-retry-max。如需規定人數佇列的詳細資訊,請參閱RabbitMQ網站上的規定人數佇列。

  • 規定人數佇列的精細消費者逾時:現在可以為每個消費者、每個佇列或使用政策設定消費者逾時。這比先前的整個代理程式consumer_timeout設定提供更精細的控制。

  • 使用政策可變更交付限制:現在可以使用政策來更新規定人數佇列交付限制,而不需要重新宣告佇列。

  • 一致的雜湊交換 (x-modulus-hash):x-modulus-hash交換類型現在內建於RabbitMQ核心中。此交換類型使用路由金鑰的一致雜湊,在繫結佇列之間分配訊息,啟用工作負載碎片,而不需要用戶端邏輯。如需一致性雜湊交換的詳細資訊,請參閱RabbitMQ網站上的一致性雜湊交換。

重要

如果您是從 RabbitMQ 4.2 升級,請注意下列訊息傳遞的變更。具有先前映射至高 (≥5) 或正常 (0–4) 優先順序的現有訊息現在使用嚴格排序來傳遞。因此,優先順序較低的訊息可能會遭到觸發,而優先順序較高的訊息會保留在佇列中。 RabbitMQ 4.2 使用以 2:1 比例為基礎的交付,這可確保正常優先順序訊息的進度。