我不确定这是否可行 - 我可以让一个演员成为许多其他演员的孩子吗?我当然可以将裁判传给其他演员,但我也需要监督才能在这种情况下工作 - 这有可能吗?
例如,这是一个带有类型actor的示例,它是系统的子代 - 我希望它是配置路由器中ConfigResponders的子代
val zoolittle = Zoolittle(system, None,
Connect(LocalConfigService.zkAddress, LocalConfigService.zkSessionTimeout))
val configRouter = system.actorOf(Props(classOf[ConfigResponder], zoolittle).withRouter(
RoundRobinRouter(nrOfInstances = 5)))
在这种情况下,我不希望与db有很多连接。
提前致谢!
答案 0 :(得分:2)
我有点想出来了。 问题是你想要有一个监督策略 - 你可以通过创建一个actor的路由器来使用类中的监督策略。
val actor: ActorRef = system.actorOf(Props(classOf[ActorClass], system.deadLetters).withRouter(
RoundRobinRouter(1, supervisorStrategy = zkSupervisor)))
val zkSupervisor =
AllForOneStrategy() {
case _: WhateverException ⇒
//do stuff
Restart
}
答案 1 :(得分:1)
每个actor都由其他一个actor创建,该actor是其父级和主管。这是演员模型和监督意味着什么的基础。
如果您希望演员成为您的ConfigResponders的孩子,那么每个ConfigResponder都必须创建这样的孩子。如果你刚刚在supervisorStrategy之后,那么让另一个演员监督它。使用路由器安装supervisorStrategy是可能的,但有点hackish,因为通常主管还必须执行其他职责,如分配工作或处理孩子的生命周期。