RabbitMQ插件是否保留消息顺序?

RabbitMQ插件是否保留消息顺序?,rabbitmq,rabbitmq-shovel,Rabbitmq,Rabbitmq Shovel,我使用RabbitMQ Spoot插件(dynamic Spoot,见下文)通过不可靠的WAN链路在两个RabbitMQ代理之间提供单向消息传递。我在RabbitMQ服务器日志中看到常规连接丢失 两个代理的AMQP设置的相关部分是相同的:一个交换(扇出,持久)和一个队列(持久)。消费应用程序要求消息的接收顺序与它们在发送端产生的顺序相同 观察到的行为似乎表明情况并非如此,可能是由于重新传输等原因。RabbitMQ铲插是否在不丢失消息的情况下保持消息顺序?所需的配置选项是什么 为确保消息顺序,应配

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

两个代理的AMQP设置的相关部分是相同的:一个交换(扇出,持久)和一个队列(持久)。消费应用程序要求消息的接收顺序与它们在发送端产生的顺序相同

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


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

 "prefetch-count" : 1
 "ack-mode"       : "on-confirm"
预回迁计数一次通过电铲复制的未确认消息的最大数量。默认值为1000

确认模式确定电铲应如何确认信息。如果在确认时设置为(默认设置),则在消息被目标确认后,会向源代理确认消息。这可以在不丢失消息的情况下处理网络错误和代理失败,并且是最慢的选项。如果设置为on publish,则消息在目标位置发布后会向源代理确认。这可以在不丢失消息的情况下处理网络错误,但在代理失败的情况下可能会丢失消息。如果设置为无确认,则不使用消息确认。这是最快的选项,但在网络或代理失败时可能会丢失消息


有关RabbitMQ电铲机制的更多信息,请参阅官方文档:

如果您有一个链接,则应保留订购。有了多个链接,很可能这是你能得到的最好的。但我们不应该期望RabbitMQ消息总是完全有序的。RabbitMQ仅在非常特定的条件下对订单提供强有力的保证。关于这方面的更多信息,请参见RabbitMQ文档页面;搜索
邮件排序保证
部分。如何设置预回迁计数?文档上说“src预取计数”,但我无法使用UI或管理API设置任何属性