gpt4 book ai didi

java - Akka的事件总线是否保证消息顺序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:20 25 4
gpt4 key购买 nike

我想保持事件进入总线的顺序。例如,如果 event1 然后 event2 进入总线,那么订阅的 actor 将按该顺序获取它们。

问题是在集群和单节点 actor 系统上是否可以保证这样的顺序。

最佳答案

如果您在 actor 系统 (system.eventStream) 上使用事件流,并且您可以保证单个线程正在发布,那么是的,顺序将被保留。事件总线的子 channel 分类风格(与 system.eventStream 相关的那种)非常简单。有一个基本类类型的 Map 到订阅参与者列表。发布事件时,它会从 Map(如果有)中获取匹配的订阅者列表,然后将消息发送给每个订阅者。因此,如果只有一个线程正在调用 publish,那么它需要先完成事件 1 的发布(并因此将其传送到所有订阅者的邮箱),然后才能继续进行事件 2。 Actor 按照收到消息的顺序处理他们的邮箱(除非您使用自定义的 PriorityMailbox impl),所以先进先出。

当然,如果您有多个线程,我不能保证按顺序处理,因为线程 1 可能首先开始发布,但线程 2 可能首先完成它,导致您认为是无序的。

关于java - Akka的事件总线是否保证消息顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com