Nats.io очередь, синхронное поведение
Согласно https://nats.io/documentation/concepts/nats-queueing/
Synchronous queue subscribers must build in logic to process the message.
Означает ли это, что если в очереди 10 сообщений, только 1 подписчик получает 1-е сообщение, а после ответа что-либо возвращается, 2-е сообщение отправляется другому абоненту?
Если это не так, может ли какое-либо программное обеспечение или система для обмена сообщениями соответствовать ситуации, о которой я говорил выше?
1 ответ
Выделенное предложение означает, что клиенты, поддерживающие асинхронных подписчиков, обрабатывают сообщения в обратных вызовах, асинхронно, а клиенты, имеющие синхронизированных подписчиков, обрабатывают их на месте (или передают их в другую программу / поток / и т. Д.).
Подписки на очереди NATS (как в ядре NATS, так и в потоковой передаче NATS) будут раздавать сообщения случайным образом между подписчиками очереди, не ожидая ответа. Если у вас есть десять сообщений, отправленных двум подписчикам очереди (A и B), подписчик очереди A может обработать сообщения 1,3,4,6,9, а подписчик очереди B обработает сообщения 2,5,7,8,10. Они могут обрабатывать сообщения с разной скоростью, поэтому с потребителями в очереди NATS не гарантирует порядок доставки.
Если вам нужно последовательно обрабатывать сообщения между несколькими подписчиками очереди, вам понадобится какая-то координация - это может быть координатор распределенных транзакций или распределенная блокировка.