RabbitMQ消息序列保证
我有一个涉及rabbitmq的项目。 我有这个问题说明如下:
现在,让我描述一下这个场景。 我有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