如何限制特定类型的参与者数量?

How to limit the number of actors of a particular type?

我创建了一个 actor 来向聊天服务器发送消息。但是,聊天服务器只允许每个用户 5 个连接。如果我敲打我的 Scala 服务器,我会收到错误消息,因为我的聊天客户端会断开连接。

那么我如何配置 akka 以便我的 XmppSenderActor 最多只使用 5 个线程?我不想限制演员系统的其余部分,只有这个对象(在路径 /XmppSenderActor/)。

我正在尝试此配置,因为我认为这是我需要配置的调度程序,但我不确定:

akka.actor.deployment {
  /XmppSenderActor {
    dispatcher = xmpp-dispatcher
  }

  xmpp-dispatcher {
    fork-join-executor.parallelism-min = 2
    fork-join-executor.parallelism-max = 3
  }
}

虽然这给了我一个错误:akka.ConfigurationException: Dispatcher [xmpp-dispatcher] not configured for path akka://sangria-server/user/XmppSenderActor

我可能会尝试配置路由器。

http://doc.akka.io/docs/akka/2.0/scala/routing.html

调度员似乎处理将消息发送到收件箱而不是实际号码或 Actor 目标。

该配置特别适合您:

akka.actor.deployment {
  /router {
    router = round-robin
    nr-of-instances = 5
  }
}

nr-of-instances 将从一开始就创建 5 个孩子,从而满足您的需求。 不过,您可能需要找到正确的路由器实现。