gpt4 book ai didi

akka - 如何在 Akka 中广播所有内容?

转载 作者:行者123 更新时间:2023-12-02 10:51:45 24 4
gpt4 key购买 nike

这里是 Java/Akka (v2.3.9)。我的每个 Akka UntypedActor 子类都能够响应多个“通用”消息,例如 ExecuteOrder66:

// Groovy pseudo-code
class StormTrooper extends UntypedActor {
@Override
void onReceive(Object message) throws Exception {
if(message instanceof ExecuteOrder66) {
// Betray the Jedi, serve only the emperor.
}
}
}

假设我有 100 个不同的 Actor 子类,每个子类都支持 ExecuteOrder66。我需要一种方法 broadcast将此消息实例发送给我的每一位 Actor ;就像每个人都收到的公共(public)广播公告一样。

我认为上面的 Akka 文档的链接让我很接近,但我没有看到一个向我的每一个 Actor 发送 ExecuteOrder66 的链接。有什么想法吗?

最佳答案

问题在于“每个人”是谁并不太清楚。如果某个 actor a 从远程 actor 系统中获取其他 actor b 的握手消息,存储 b 的引用,交换一些消息,该怎么办,然后在没有 b 引用的情况下失败并重新启动? b 是“everybody”的一部分吗?谁负责再次找到 Actor b?人们怎么知道b还活着?

但是,如果您有一个特定的参与者系统,则带有通配符的路径选择可以满足您的需求。像这样的事情可能会完成这项工作:

mySystem.actorSelection("akka://mySystemName/**")

此参与者选择可用于告诉(!)您向系统上的每个参与者广播的消息。您还可以考虑限制更多一些,仅选择 /user 下的参与者,而不触及系统参与者。

免责声明:我刚刚在 REPL 中设置的一个临时 Actor 系统不会提示上面所示的路径,但我没有对其进行彻底测试。一个可运行的玩具示例可能会有所帮助。

关于akka - 如何在 Akka 中广播所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757543/

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