Akka分布式发布-订阅保证

Akka分布式发布-订阅保证,akka,publish-subscribe,akka-cluster,Akka,Publish Subscribe,Akka Cluster,我在Akka文档中找不到这个问题的答案 我知道,按顺序发布到同一主题的两条消息保证以相同/正确的顺序到达。如果我将两条消息发布到两个不同的主题,它们是否也保证以正确的顺序到达?如果没有,我可以使用什么样的范例来确保这一点?注意:我不将这些消息发布到同一主题有一个很好的理由 谢谢你的帮助。我应该提醒你,这是我所能理解的。似乎分布式发布子中的主题是由参与者烘焙的。每个主题都保留一个订阅者列表。pub-sub中的消息传递将遵循任何一对参与者之间相同的传递和排序保证 我想谈谈第一条评论,即发送/发布到同

我在Akka文档中找不到这个问题的答案

我知道,按顺序发布到同一主题的两条消息保证以相同/正确的顺序到达。如果我将两条消息发布到两个不同的主题,它们是否也保证以正确的顺序到达?如果没有,我可以使用什么样的范例来确保这一点?注意:我不将这些消息发布到同一主题有一个很好的理由


谢谢你的帮助。

我应该提醒你,这是我所能理解的。似乎分布式发布子中的主题是由参与者烘焙的。每个主题都保留一个订阅者列表。pub-sub中的消息传递将遵循任何一对参与者之间相同的传递和排序保证

我想谈谈第一条评论,即发送/发布到同一主题的消息保证以相同的顺序发送。这仅适用于一个订户。在这种情况下,主题是一个参与者,订阅者是另一个参与者。因此,消息将按顺序传递(如果有的话)。但是,如果我有两个订阅服务器(S1和S2)指向同一主题,并且我将消息A和B发布到同一主题,则完全有可能B(和A)都将在A传递到S2之前传递到S1

另外,发送到不同主题的消息似乎也没有任何排序保证。如果您需要这种排序,您似乎需要将其编码到您的消息传递协议本身(例如序列号、向量时钟等)

此外,无论是一个主题还是两个主题,对于您的用例,您可能需要考虑其他问题,例如至少需要一次消息传递语义。原因是,即使只有一个主题,我也不能保证主题的第一条消息会在第二条之前发送。我可以保证,如果第一条消息和第二条消息被传递(没有丢失),那么第一条消息将在第二条消息之前到达。但是,第一个可能根本无法交付,第二个可能在订阅者没有看到第一个的情况下到达。这适用于向同一主题以及不同主题发送消息

如果确实需要,您可能需要评估可靠代理模式:


欢迎来自其他成员的反馈…

感谢您澄清Michael!