Nats.io очередь, синхронное поведение - PullRequest
0 голосов
/ 05 сентября 2018

Согласно https://nats.io/documentation/concepts/nats-queueing/

Synchronous queue subscribers must build in logic to process the message.

Означает ли это, что если в очереди 10 сообщений, только 1 подписчик получает 1-е сообщение, а после ответа что-либо возвращается, 2-е сообщение отправляется другому абоненту?

Если это не так, может ли какое-либо программное обеспечение или система для обмена сообщениями соответствовать ситуации, о которой я упоминал выше?

1 Ответ

0 голосов
/ 10 сентября 2018

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

Подписки на очереди NATS (как в ядре NATS, так и в потоковой передаче NATS) будут рассылать сообщения случайным образом между подписчиками очереди, не ожидая ответа. Если у вас есть десять сообщений, отправленных двум подписчикам очереди (A и B), подписчик очереди A может обработать сообщения 1,3,4,6,9, а подписчик очереди B обработает сообщения 2,5,7,8,10. Они могут обрабатывать сообщения с разной скоростью, поэтому с потребителями в очереди NATS не гарантирует порядок доставки.

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

...