簡體   English   中英

BackoffSupervisor可以有多個子演員嗎?

[英]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

我如何重用同一主管來監督foobar

/user/dad/supervisor/foo
/user/dad/supervisor/bar

BackoffSupervisor僅支持一個(直接)子級。

如果要重用BackoffSupervisor ,唯一的方法是將另一個Supervisor作為其子級:

/user/dad/backoffsupervisor/supervisor/foo
/user/dad/backoffsupervisor/supervisor/bar

其中/user/dad/backoffsupervisorBackoffSupervisor ,而/user/dad/backoffsupervisor/supervisor/user/dad/backoffsupervisor/supervisor其子級( foobar )並在任何一個子級停止時都停止的/user/dad/backoffsupervisor/supervisor ,將故障級聯到backoff主管。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM