NATS的订购保证涵盖出版多个主题吗?

时间:2019-02-10 17:43:31

标签: messaging nats.io

https://nats.io/documentation/faq/#ordering

  

NATS实现每个发布者的源顺序交付。

在以下登录服务订阅用户服务主题的情况下,NATS是否保证消息顺序,其中所有消息传递都在单个NATS群集上运行(没有NATS流):

用例:用户服务(Java客户端)在主题“ query.users”上侦听请求消息。消息到达时,它将当前用户列表发布到响应主题。在用户服务中,可以创建新用户,从而将更新消息发布在“ users.updates”主题中。

如果启动时的登录服务首先订阅“ users.updates”,然后立即查询“ query.users”,则它将接收当前用户列表和该列表的更新,因此可以保留该用户的最终副本。用户列表。

问题:如果用户服务收到“ query.users”查询,并将用户列表作为响应发送(在查询生成的主题中),然后立即在“ users.updates”主题,

可以保证

  • 登录服务将首先接收所生成主题中的查询响应,然后接收“ users.updates”主题中的更新消息,或者
  • 登录服务将同时收到两条消息,但顺序不确定

是否可能建立对“ users.updates”的订阅的速度不够快,并且登录服务从未收到更新消息,但是会收到查询的用户列表吗?


或者,同一个问题,更抽象

一个NATS集群,没有NATS流式传输...

Java客户端A的调度程序正在侦听主题X。消息到达时,它首先发布对ReplyTo主题的响应,然后立即将消息发布到Y主题。

如果Java客户端B首先订阅Y,然后立即向主题X发送查询,则我们希望客户端B会收到响应和消息。

可以肯定,客户端B将

  • 首先收到回复,然后在Y上显示消息,或者
  • 收到两条消息,但顺序不确定

可能会发生,是对Y的订阅建立得不够快,并且客户端B尽管收到了对其查询的响应,但从未收到关于Y的消息?

0 个答案:

没有答案