gpt4 book ai didi

akka - Akka中actor池和组的区别

转载 作者:行者123 更新时间:2023-12-04 18:39:48 25 4
gpt4 key购买 nike

我刚刚开始使用 Akka,我试图了解 Actor 池和组之间的区别以及何时使用哪个。在 doc它简要地说一个组不是由路由器创建的,所以这意味着他们没有主人?

在下面的情况下,您是否可以将消息从一个工作组(或池?)直接路由到另一个,而无需通过 Master 发送?

Akka

最佳答案

关于区别:

Sometimes, rather than having the router actor create its routees, it is desirable to create routees separately and provide them to the router for its use. You can do this by passing an paths of the routees to the router's configuration. Messages will be sent with ActorSelection to these paths.



所以区别在于,在“池”的情况下,您的工作人员由池自动创建(和监督)。在“组”的情况下 - 您必须首先创建 Actor ,然后将路径列表(将在 ActorSelection 中使用)传递给这些 Actor 到主人:
val router: ActorRef = // group's master, but not supervisor 
context.actorOf(RoundRobinGroup(List("/user/workers/w1", "/user/workers/w2", "/user/workers/w3")).props(), "router4")

因此,两者都有一个主actor( router ),但在第二种情况下,worker 是由另一个actor(s)手动创建的-因此默认情况下,另一个actor会监督它们(如果它们不是顶级的,当然)并接收生命周期消息。因此,这里有 3 种 Actor :主人、主管、 worker 。

关于“直接”路由。每个组/池都有自己的合成 master actor,因此当您向该组发送消息时,它总是首先发送到 master。但是,如果您知道组成员的地址(如上面示例中的“/user/workers/w1”),则没有什么可以阻止您直接向工作人员发送消息。

关于akka - Akka中actor池和组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29004171/

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