我正在研究的一个组件需要创建一些参与者(可能是循环路由的参与者),每个参与者都需要处理相当多的消息。每个actor都属于一个“处理批处理”,它具有相同的初始化参数。
当我在具有许多消息的生产机器上运行它时,我很快就会获得许多演员创建超时。我正在用ActorSystem.actorOf()
直接创建演员。
令我感到惊讶的是,总而言之,创造的并没有那么多的演员被我认为(8个“处理接收器”与5个循环路线演员将是40个演员,这似乎不是很多)。
一旦他们不再需要,我就会关闭演员,让另一个演员(计算通过“处理”演员获得的成功和失败的数量)向他们发送PoisonPill
所以我我认为他们都被正确关闭了。
我是否可能在创作这些演员的方式上做错了,例如:我应该以不同的方式创造它们吗或者一个合适的策略是在创建新演员之前等待一些批次完成吗?
答案 0 :(得分:0)
由于您没有指定您使用的是哪个版本,我假设您有兴趣阅读此内容:
http://doc.akka.io/docs/akka/2.0.3/scala/actors.html#Creating_Actors_with_default_constructor(特别是警告)
除了技术论证之外,在顶级创建演员并不是一个好的设计,错过了故障处理的好处。