根据https://nats.io/documentation/concepts/nats-queueing/
Synchronous queue subscribers must build in logic to process the message.
这是否意味着如果队列中有10条消息,只有一个订户获得第一条消息,并且在回复某些内容后,第二条消息将发送给另一订户?
如果不是,是否有任何消息传递软件或系统可以满足我上面提到的情况?
答案 0 :(得分:0)
突出显示的句子表示,支持异步订阅者的客户端以异步方式处理回调中的消息,而拥有同步订阅者的客户端则在适当位置处理它们(或将它们传递给另一个goroutine / thread / etc)。
NATS队列订阅(在NATS核心和NATS流中都使用)将在队列订阅者之间随机散发消息,而不等待响应。如果您有十个消息发送到两个队列订阅者(A和B),则队列订阅者A可能会处理消息1,3,4,6,9,而队列订阅者B会处理消息2,5,7,8,10。它们可能以不同的速率处理消息,因此对于队列使用者,NATS不能保证传递顺序。
如果需要在多个队列订阅者之间串行处理消息,则需要某种协调-这可以是分布式事务协调器或分布式锁。