我有一组无国籍的演员,执行类似的任务。
这些工人中的每一个都是不可靠的并且可能表现不佳。在我的设计中,我可以轻松地产生更多演员来取代懒惰的演员。
演员的演技是靠自己来评价的。有没有办法让主管/演员池进行此评估,以帮助决定哪些工作人员速度慢到足以让我替换?或者我当前的策略是“正确的”策略吗?
我自己对 akka 很陌生,所以只是想提供帮助,但我的攻击将是以下几行:
编写自己的路由逻辑,大致如下https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/SmallestMailbox.scala https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/SmallestMailbox.scala请记住,为每个池创建一个新实例,因此每个实例可以存储有关每个参与者到目前为止已处理多少消息的信息。在这种情况下,一旦发现某个参与者表现不佳,请在单独的数据结构中将其标记为“可移除”(一旦不再处理任何新消息),并停止发送进一步的消息。
编写自己的路由器池:覆盖 createRouterActorhttps://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/RouterConfig.scala:236 https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/RouterConfig.scala:236提供您自己的 CustomRouterPoolActor
按照以下几行编写您的 CustomRouterPoolActor:https://github.com/akka/akka/blob/8485cd2ebb46d2fba851c41c03e34436e498c005/akka-actor/src/main/scala/akka/routing/Resizer.scala https://github.com/akka/akka/blob/8485cd2ebb46d2fba851c41c03e34436e498c005/akka-actor/src/main/scala/akka/routing/Resizer.scala(请参阅 RessizedPoolActor)。该参与者将有权访问您的策略实例。从此策略实例中删除已标记为删除的路由。查看 ResizablePoolCell 了解如何删除 actor。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)