[英]Starting dynamic simple_one_for_one workers after supervisor starts
我有一個名為Supervisor
,監督許多simple_one_for_one
工作者,它們定期為我的系統上的每個用戶執行任務。
我希望應用程序在Supervisor
第一次啟動時為每個用戶啟動一個worker,如果Supervisor
在以后重新啟動,我希望應用程序執行相同操作,無論出於何種原因。
目前,我在Application
的start(type, args)
回調中動態啟動所有子項,但如果Supervisor
重新啟動,則不會啟動所有子進程。
在Supervisor
啟動/重啟后,如何確保所有動態子工作者立即啟動?
(我的應用程序在Elixir中,但同樣的原則適用於Erlang。)
我做到這一點的一種方法非常有效,就是使用另一個主管和一個“重啟工作者”。 你的主管是新主管的孩子 - 它是重啟工作者的兄弟。 新主管使用one_for_all
或rest_for_one
,這樣如果您的主管死亡,重啟工作人員也會重新啟動。
重新啟動重新啟動工作程序時,它可以啟動動態工作程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.