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