activemq amqp消息顺序保存

问题描述 投票:0回答:1

我对这句话的模糊性感到困惑:

http://activemq.apache.org/how-do-i-preserve-order-of-messages.html

如果单个队列中有多个消费者,则消费者将竞争消息,而ActiveMQ将在它们之间进行负载平衡,因此订单将丢失。

这是否意味着如果我在一个主题(T1)上发布一个生产者(P1),并且该主题发布四个订阅者(S1,S2,S3,S4)。以上都使用AMQP。

是否无法保证S1自己以相同的顺序看到来自P1的消息顺序?

并且每个其他订户不一定会看到订单而不是实际发送的P1?)。

注意,我在这里谈论jms pub / sub主题://

[如果我添加更多生成器但每个生成器都有自己的主题队列,那么这会影响其他队列的顺序吗?]

我不希望这样,但网站上的声明给了我们一些关注。

activemq amqp
1个回答
1
投票

文档实际上相当清楚:

ActiveMQ将保留单个生产者发送给主题上所有消费者的消息顺序。如果队列中只有一个消费者,那么单个生产者发送的消息顺序也将被保留。

因为你问的是关于主题的第一句话几乎为你做了准备,对于主题,当有一个生产者时,保留了订单。主题上的每个订阅者都会看到发送的每条消息,并按照发送的顺序查看它(禁止任何基于优先级的重新排序)。只有在谈论队列(不是主题)时,排序才会变得更加复杂。

对于队列,你不再做pub / sub你正在点对点,在这种情况下,多个用户竞争来自队列的消息,因此你不再拥有订单保证,因为每个消费者都会收集一些消息并依赖在预取时,他们会将它们分成一些你无法预测的批次。

© www.soinside.com 2019 - 2024. All rights reserved.