[英]Can a BackoffSupervisor have multiple children actors?
我所有的演員都繼承自BaseActor
並可以使用registerActor()
創建子演員
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
BackoffSupervisor
僅支持一個(直接)子級。
如果要重用BackoffSupervisor
,唯一的方法是將另一個Supervisor作為其子級:
/user/dad/backoffsupervisor/supervisor/foo
/user/dad/backoffsupervisor/supervisor/bar
其中/user/dad/backoffsupervisor
是BackoffSupervisor
,而/user/dad/backoffsupervisor/supervisor
是/user/dad/backoffsupervisor/supervisor
其子級( foo
和bar
)並在任何一個子級停止時都停止的/user/dad/backoffsupervisor/supervisor
,將故障級聯到backoff主管。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.