java - 在akka系统中,如何在一定时间内计算某一类型的参与者?

  显示原文与译文双语对照的内容
0 0

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框架,所以请与我一起。

时间: 原作者:

0 0

在我的一个Akka应用程序( 我的第一个,而不是我将作为如何编写这样的系统的例子的一个) 中,我实现了一个由心跳驱动的低水/高水。 低和高的标记是按照活动参与者活动的数量定义的,每一个都做一件事,由经理创建。 管理器跟踪启动和作为unompleted工作者的跟踪,并可以响应来自工作生成器的当前活动计数的请求。 对这些查询的响应提供了有关正在进行的工作是否已经低于低水位的信息,以及是否应该生成新的工作。

它是粗糙的,在新的系统中,我正在处理工作生成和工作执行之间的连接,这是以一种更连续的。更少的"面向批处理"方式完成的。 这个系统即将部署,所以现在我无法确定它将如何执行,但是我非常肯定它会表现出比以前的系统更好的行为。 它在生成。执行和记录它所做的工作中的早期系统也更加复杂。

0 0

[Going to put this also as a valid answer ]

如果需要计数的参与者不是父对象和/或者不能检索目标参与者的ActorRef s,那么下面可能是另一个选择。

通过发送"人头计数"消息来计算某种类型的参与者数可以通过发送一个 ActorRef array 来实现,并将每个参与者传递给一个。 然后每个目标参与者都可以将它的ActorRef添加到该列表中并转发消息。 但是这取决于系统的性质,并且仅当你知道你没有在"人头计数"中生成任何参与者时,才可以使用该系统。

原作者:
...