activemq amqp 消息顺序保存

activemq amqp message order preservaton

我对这句话的含糊不清感到困惑:

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

If you have multiple consumers on a single queue the consumers will compete for messages and ActiveMQ will load balance across them, so order will be lost.

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

是否不能保证来自 P1 的消息顺序会被 S1 本身以相同的顺序看到?

并且其他订阅者不一定会看到比 P1 实际发送的订单?)。

注意,我在这里通过 topic://

谈论 jms pub/sub

[如果我添加更多生产者,但每个生产者都有自己的主题队列,是否也会影响其他队列的顺序?]

我没想到会这样,但网站上的声明在这里让我们有些担忧。

文档实际上相当清楚:

ActiveMQ will preserve the order of messages sent by a single producer to all consumers on a topic. If there is a single consumer on a queue then the order of messages sent by a single producer will be preserved as well.

既然你问的是主题,那么第一句话就很明确了,对于主题,只有一个制作人才能保持秩序。主题上的每个订阅者都会看到发送的每条消息,并按照发送的顺序看到它(除非有任何基于优先级的重新排序)。只有当您谈论队列(而不是主题)时,排序才会变得更加复杂。

对于 Queue,你不再做 pub/sub你做的是点对点,在这种情况下,多个订阅者竞争来自 Queue 的消息,因此你不再有订单保证,因为每个消费者将接收一些消息,并且根据预取,它们将以您无法预测的一些批次接收它们。