activemq amqp сохранение порядка сообщений - PullRequest
0 голосов
/ 31 марта 2019

У меня проблемы с двусмысленностью этого утверждения:

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

Если в одной очереди несколько потребителей, потребители будут конкурировать за сообщения, а ActiveMQ будет распределять между ними баланс нагрузки, поэтому порядок будет потерян.

Означает ли это, что если я один продюсер (P1) публикую на одну тему (T1) и четыре подписчика на эту тему (S1, S2, S3, S4). Все выше, используя AMQP.

Нет ли гарантии, что S1 будет видеть порядок сообщений от P1 в том же порядке?

И каждый подписчик не обязательно будет видеть заказ, который фактически отправил P1?).

Заметьте, я говорю о jms pub / sub через тему: //

[Если я добавлю больше производителей, но у каждого будет своя собственная тема, это также повлияет на порядок в других очередях?]

Я бы не ожидал этого, но заявление с сайта вызывает у нас некоторые опасения.

1 Ответ

1 голос
/ 01 апреля 2019

Документация на самом деле довольно ясна:

ActiveMQ сохранит порядок сообщений, отправляемых одним производителем всем потребителям по теме.Если в очереди есть один потребитель, то порядок сообщений, отправленных одним производителем, также будет сохранен.

Поскольку вы спрашиваете о Темах, первое предложение в значительной степени закрепляет его за вами.для тем порядок сохраняется при наличии одного производителя.Каждый подписчик в теме просматривает каждое отправленное сообщение и видит его в том порядке, в котором оно было отправлено (за исключением переупорядочения на основе приоритетов).Только когда вы говорите об очередях (не темах), порядок становится более сложным.

Для очереди вы больше не делаете pub / sub, вы делаете двухточечное соединение, и в этом случае несколько подписчиков конкурируют за сообщения из очереди, и, таким образом, у вас больше нет гарантии заказа, так как каждый потребитель будетпринимать некоторые сообщения и в зависимости от предварительной выборки они будут принимать их в некоторых пакетах, которые вы не можете предсказать.

...