Nats.io队列,同步行为

时间:2018-09-05 11:05:14

标签: messaging publish-subscribe nats.io

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

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

这是否意味着如果队列中有10条消息,只有一个订户获得第一条消息,并且在回复某些内容后,第二条消息将发送给另一订户?

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

1 个答案:

答案 0 :(得分:0)

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

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

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