如何使用动态监控确定RestartStrategy

时间:2013-04-03 04:16:36

标签: erlang otp

如果静态启动子规范:

init(...) ->
    {ok, {{RestartStrategy, MaxR, MaxT},
          [ChildSpec, ...]}}.

但如果我动态启动子规范:

start_child(SupRef, ChildSpec) -> startchild_ret()

如何确定RestartStrategy,MaxR和MaxT?

2 个答案:

答案 0 :(得分:2)

你无法在start_child或其他任何地方确定RestartStrategy,MaxR和MaxT。这些是主管的属性(不是孩子的),你只能在主管的init / 1回调中确定它们。

答案 1 :(得分:1)

鉴于RestartStrategy是主管而不是其子主的属性,您可以在监督树中添加一个额外的层,并让多个主管作为 root 主管的子主。每个子监督员都会指定不同的RestartStrategy。然后,您将向适当的主管添加子项。

enter image description here

来自Learn You Some Erlang的图片。