本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
RabbitMQ 4.3
Amazon MQ 现在在所有支持的实例大小上支持 mq.m7g 实例类型的 RabbitMQ 4 版本系列中的 RabbitMQ 4.3。RabbitMQ4.3 引入了法定队列增强功能、新的交换类型,并完成了对早期 4.x 版本中过时的多项功能的移除。有关此版本的更多信息,请参阅 GitHub 网站上的 RabbitMQ 4.3.0 版本说明
重要
亚马逊 MQ 仅支持从 RabbitMQ 4. RabbitMQ 2 升级到 4.3。您无法直接从 RabbitMQ 3.13 升级到 4.3。如果您的经纪商运行的是 RabbitMQ 3.13,则必须先升级到 RabbitMQ 4.2,然后才能升级到 4.3。
中的重大变化 RabbitMQ 亚马逊 MQ 上的 4.3
升级到 RabbitMQ 4.3 时,以下开源更改可能会影响您的应用程序。在升级经纪商之前,请查看这些更改。
-
临时非排他队列被拒绝:声明一个既非持久队列又非排他性的队列现在会返回错误。RabbitMQ4.3 版亚马逊 MQ 移除了对该功能的支持。改为在网站上使用持久队列、独占队列或具有队列 TTL 的持久
队列。RabbitMQ -
全局 QoS 被拒绝:
global=true现在basic.qos使用呼叫会返回信道错误。RabbitMQ4.3 版亚马逊 MQ 移除了对该功能的支持。改为使用每位消费者 prefetch (global=false)。有关此变更的更多信息,请参阅RabbitMQ网站上的移除全球 QoS。 -
移除了经典队列 v1 存储:
x-queue-version=1现在使用以下方式声明队列会返回错误。经典队列 v2 是唯一支持的存储引擎。亚马逊 MQ 自 RabbitMQ 3.12 版本起强制执行 v2,因此现有队列不受影响。 -
使用者超时不再适用于经典队列:经典队列不再评估消费者超时。如果消费者停留在应用程序级别,则RabbitMQ不会自动重新传送消息。该
consumer_timeout设置继续适用于法定队列。如果您的应用程序依赖传统队列的使用者超时,请考虑迁移到仲裁队列或实施应用程序级心跳检查。有关此变更的更多信息,请参阅 GitHub 网站上的 RabbitMQ 4.3.0 版本说明。
中的新功能和增强功能 RabbitMQ 亚马逊 MQ 上的 4.3
-
Quorum 队列严格优先级:Quorum 队列现在支持严格的优先级排序,多达 32 个级别 (0—31),使用队列参数启用。
x-max-priorityHigher-priority 消息始终在优先级较低的消息之前传送。这取代了 4.2 中引入的基于比率的 2 级交付。RabbitMQ有关法定队列优先级的更多信息,请参阅网站上的 Quorum队列优先级。RabbitMQ -
Quorum 队列延迟重试:Quorum 队列支持延迟重试,可配置递增回退。您可以使用队列参数或策略密钥 (
delayed-retry-type、delayed-retry-min、delayed-retry-max) 来配置重试行为。有关法定队列的更多信息,请参阅网站上的法定队列。RabbitMQ -
Quorum 队列的精细消费者超时:现在可以按使用者、每个队列或使用策略来设置使用者超时。与之前的经纪
consumer_timeout商范围设置相比,这提供了更精细的控制。 -
使用策略可更改交付限制:现在可以使用策略更新法定队列传送限制,无需重新声明队列。
-
一致的哈希交换(x-modulus-hash):
x-modulus-hash交换类型现已内置在核心中。RabbitMQ这种交换类型通过使用路由密钥的一致哈希来跨绑定队列分发消息,从而无需客户端逻辑即可实现工作负载分片。有关一致哈希交换的更多信息,请参阅RabbitMQ网站上的一致哈希交换。
重要
如果您要从 RabbitMQ 4.2 升级,请注意消息传送的以下更改。以前优先级映射为高(≥5)或正常(0—4)的现有消息现在使用严格顺序传送。因此,优先级较低的消息可能会枯竭,而优先级较高的消息仍留在队列中。RabbitMQ4.2 使用基于 2:1 的比率传输,这保证了正常优先级消息的进展。