【发布时间】:2019-09-18 14:31:04
【问题描述】:
我所有的actors都继承自BaseActor并且可以用registerActor()创建子actor
abstract class BaseActor() : AbstractLoggingActor() {
protected fun registerActor(childProps: Props, name: String): ActorRef {
val child = context.child(name)
val supervisorProps = BackoffSupervisor.props(
BackoffOpts.onFailure(
childProps,
name,
java.time.Duration.ofSeconds(1),
java.time.Duration.ofSeconds(30),
0.2 // adds 20% "noise" to vary the intervals slightly
).withAutoReset(FiniteDuration(20, TimeUnit.SECONDS))
)
return if (child.isEmpty) {
context.actorOf(supervisorProps, "supervisor_$name").also { addChildRoutee(it) }
} else {
child.get()
}
}
}
当一个演员 /user/dad 使用 registerActor() 创建 2 个子演员时,但是创建了 2 个主管
/user/dad/supervisor_foo/foo
/user/dad/supervisor_bar/bar
如何重复使用同一个主管来监督foo 和bar?
/user/dad/supervisor/foo
/user/dad/supervisor/bar
【问题讨论】:
标签: kotlin akka akka-supervision