有什么方法可以查看一个 ActorSystem 有多少个演员,他们的名字是什么?

Is there any way to see how many actors an ActorSystem has, and what their names are?

我正在考虑构建一个系统,使用当前返回的查询中的信息为用户预取查询(用户在数据库中查询 userId,returns phone 呼叫用户一直在。我想预取 phone 呼叫的查询(例如日期、持续时间和记录的 phone 呼叫的位置)。用户可能永远不会查询那些事情,但他们通常会这样做。

目前,每个查询大约需要 10 秒(代码中需要进行一些优化,但最大的瓶颈是数据库,这不是我能控制的)。

所以,我想对演员进行预取。我最终会想出一种方法让演员在 x 次未使用时自杀,但首先我想要一种方法来查看我有哪些演员 运行。

在 Akka.NET 中有什么方法可以做到这一点吗?

如何对此进行建模,方法是让 parent actor 处理一组特定的 prefetchingActor。无论您有一个 Actor 来管理您的所有预取,还是多个 Actor,每个 Actor 都管理一组专门的预取器,由您决定。

但重点是您最终会得到一个 well-defined 顶级 actor,您可以发送消息询问它有多少活动预取器。

更新:

您可以使用 ActorSelection 和通配符向多个演员发送消息。

关于处理超时。我会使用钝化模式。一个 child actor 可以使用 ReceiveTimeout 方法来监控它自己的 activity,并在检测到它空闲了 x 时间后向它的 parent 发送一条钝化消息。 一旦 parent 收到钝化消息,它将停止将消息路由到 child,而是缓冲它们。并停止演员。一旦 actor 终止被确认,它会检查是否有该 actor 的任何新消息,如果有则重新创建 actor 并将消息从其缓冲区刷新到它。