RabbitMQ铲子插件是否保留消息排序?

我使用RabbitMQ铲子插件(动态铲子,见下文)通过不可靠的WAN链路在两个RabbitMQ代理之间提供单向消息传递。 我在RabbitMQ服务器日志中看到常规连接丢失。

AMQP设置的相关部分对于两个经纪人都是相同的:一个交易所(扇出,持久)和一个队列(持久)。 消费应用程序要求消息按照它们在发送端生成的相同顺序接收。

观察到的行为似乎表明情况并非如此,可能是由于重新传输等原因。RabbitMQ铲斗插件是否保留消息排序而不会丢失消息? 什么是必需的配置选项?

铲声明


为确保消息排序,应配置以下参数:

 "prefetch-count" : 1
 "ack-mode"       : "on-confirm"

prefetch-count在任何时候通过铲子复制的未确认消息的最大数量。 默认值是1000。

ack-mode确定铲子应该如何确认信息。 如果设置为on-confirm (缺省值),则消息在经过目的地确认后会被确认给源代理。 这可以处理网络错误和代理故障而不会丢失消息,并且是最慢的选项。 如果设置为发布,消息在源代理发布到目标后会被确认。 这可以处理网络错误而不会丢失消息,但在代理失败的情况下可能会丢失消息。 如果设置为不确认,则不使用消息确认。 这是最快的选择,但在网络或代理失败的情况下可能会丢失消息。

有关RabbitMQ铲子机构的更多信息,请参阅官方文档:https://www.rabbitmq.com/shovel-dynamic.html

链接地址: http://www.djcxy.com/p/34185.html

上一篇: Does the RabbitMQ shovel plugin preserve message ordering?

下一篇: Spring AMQP ensuring message order in multi