1

编辑:我忘了提到一件重要的事情:下面描述的演员创建​​取决于数据 - 有时需要很少的处理演员,有时需要很多。

我正在处理的一个组件需要创建许多参与者(可能是循环路由的参与者),每个参与者都需要处理大量消息。这些参与者中的每一个都属于具有相同初始化参数的“处理批次”。

当我在带有许多消息的生产机器上运行它时,我很快就会得到一些演员创建超时。我直接用创建演员ActorSystem.actorOf()

但令我惊讶的是,我认为总而言之,创建的演员并不多(8 个“处理接收器”和 5 个循环路由演员将是 40 个演员,这似乎并不多)。

一旦不再需要演员,我就会关闭演员,让另一个演员(计算通过“处理”演员获得的成功和失败的数量)发送给他们,PoisonPill所以我认为他们都被关闭了正确放下。

我在创建这些演员的方式上可能做错了什么,例如我应该以不同的方式创建它们吗?或者一个合适的策略是在创建新的actor之前等待一些批次完成?

4

1 回答 1

0

由于您没有指定您使用的是哪个版本,我假设您有兴趣阅读以下内容:

http://doc.akka.io/docs/akka/2.0.3/scala/actors.html#Creating_Actors_with_default_constructor(尤其是警告)

除了技术论点之外,在顶层创建您的演员不是一个好的设计,错过了故障处理的好处。

于 2012-10-25T09:46:08.240 回答