RabbitMQ消息序列保证

我有一个涉及rabbitmq的项目。 我有这个问题说明如下:

Problem

现在,让我描述一下这个场景。 我有n个订阅topic1的队列。 现在我的问题是,如果我按顺序发布了3条消息,它们被显示为1代理,2代理和3代理叫做Exchange ,请问rabbitmq 保证所有队列中这些消息的顺序?

我发现的唯一情况是在rabbitmq文档中正在采取的消息排序保证

AMQP 0-9-1核心规范的第4.7节解释了保证排序的条件:在一个频道中发布的消息,通过一个交换机,一个队列和一个输出频道将按照它们发送的相同顺序接收。 自2.7.0版本以来,RabbitMQ提供了更强大的保证。

那么,任何人都可以帮助我,并指出我是否有正确的文档或示例来显示它是否有保证?

谢谢


你所引用的内容完美地回答你的问题。 唯一的问题是你的消费者设置的样子。 如果每个队列都连接到自己的通道,并且该使用者正在自己的线程中运行,那么该线程将按照发布的顺序查看每条消息。


正如另一张海报中提到的,假设一个简单的/基本的消费者设置,你的场景应该可以正常工作 但是这里有一些额外的信息可以解释为什么。

我不确定在文档的这一部分中可能包含哪些细微差别,直到我查找了一个Channel是什么。 与RabbitMQ的连接可以在其中有多个称为channels “小型连接”。 每个渠道都是独立的,因此您可以通过多个渠道向经纪商发送多条消息。

因此,只要您的方案中的消息是在单个频道上发送的(您必须明确尝试使用多个频道),它们将按照您发送的顺序到达队列中。 只要消息是通过单个渠道消费的,他们就会按照到达队列的顺序到达消费者(也就是他们发送的订单)。

来自:https://www.rabbitmq.com/tutorials/amqp-concepts.html

某些应用程序需要多个连接到AMQP代理。 但是,不希望同时打开许多TCP连接,因为这样做会占用系统资源并使配置防火墙变得更加困难。 AMQP 0-9-1连接与可被认为是“共享单个TCP连接的轻量级连接”的通道复用。

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

上一篇: RabbitMQ Message Sequence Guarantee

下一篇: Using AMQP (RabbitMQ) for High Availablity in my applications