2

根据https://nats.io/documentation/concepts/nats-queueing/

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

这是否意味着如果队列中有 10 条消息,则只有一个订阅者收到第一条消息,并且在回复后,第二条消息将发送给另一个订阅者?

如果不是,是否有任何消息传递软件或系统可以满足我上面提到的情况?

4

1 回答 1

2

突出显示的句子意味着支持异步订阅者的客户端以异步方式在回调中处理消息,而具有同步订阅者的客户端则在适当的位置处理它们(或将它们传递给另一个 goroutine/thread/etc)。

NATS 队列订阅(在 NATS 核心和 NATS 流中)将在队列订阅者之间随机发送消息,而不是等待响应。如果您有十条消息发送到两个队列订阅者(A 和 B),队列订阅者 A 可能会处理消息 1、3、4、6、9,而队列订阅者 B 将处理消息 2、5、7、8、10。这些可能以不同的速率处理消息,因此对于队列消费者,NATS 不能保证传递顺序。

如果您需要在多个队列订阅者之间串行处理消息,则需要某种协调——这可能是分布式事务协调器或分布式锁。

于 2018-09-10T18:02:28.110 回答