1

Akka 2 是否提供了一种方法来确定系统中特定时间活动的特定类型的参与者数量?

我一直在寻找类似的东西

int actorCount = getContext().count(MyActor.class)

或者

Props props = Props.create(MyActor.class, "actorName")
...
int actorCount = getContext().count(props)

或者

getContext().actorSelection("/path/to/actor").count()

我刚刚开始使用 Java 中的 akka 框架,所以请多多包涵。

4

2 回答 2

0

[打算把这也作为一个有效的答案]

如果需要计数的演员不是父母和/或无法检索ActorRef目标演员的 s,那么以下可能是替代方案。

可以通过发送“人数统计”消息、持有一个ActorRef数组、传递每个参与者来计算某种类型的参与者的数量。然后每个目标演员可以将它的 ActorRef 添加到该列表并转发消息。但这取决于系统的性质,并且只有在您毫无疑问地知道在“人数统计”期间没有任何演员出现时才有效。

于 2013-06-24T09:37:21.207 回答
0

在我的一个 Akka 应用程序中(我的第一个,而不是作为如何编写此类系统的光辉示例),我实现了由心跳驱动的低水/高水工作生成策略。低水位线和高水位线是根据活跃的工作参与者的数量来定义的,每个参与者都做一件事并由经理创建。该经理跟踪已启动和尚未完成的工作人员,并可以响应来自工作生成器的当前活动计数请求。对这些询问的答复提供了有关在建工作是否已低于低水位线以及是否应生成新工作的信息。

这有点粗糙,在我现在正在开发的新系统中,工作生成和工作执行以及检查点日志记录之间的连接是以更连续、更少“面向批处理”的方式完成的。这个系统即将部署,所以目前我不能确定它的性能如何,但我很确定它会表现出比早期系统更好的行为。与早期系统在如何生成、执行和记录它所做的工作方面相比,它本质上也更加复杂。

于 2013-06-20T00:03:24.177 回答