Frage

Ist es möglich, die Aufsichtsbehörden innerhalb einer Anwendung kaskadieren?

z. Supervisor sup1 ein Kind Prozess Laichen, die einen Supervisor sup2 schafft?

War es hilfreich?

Lösung

Sie wollen wahrscheinlich das Kind als Supervisor hinzuzufügen.

Es ist ein Eintrag in der childspec eines Kindes eines Betreuers. Der „Typ“ des Kindes kann auf „Supervisor“ eingestellt werden:

http://www.erlang.org/doc/design_principles/sup_princ .html # spec

Wahrscheinlich können Sie es über das Kind tun ein Supervisor-Start selbst auch, aber es ist zumindest weniger elegant und es ist weniger klar, was Sie tun.

HTH, h.

Andere Tipps

Ja, Sie können einfach Vorgesetzte als Kinder eines Supervisors hinzuzufügen. Oder mischen und zusammenzupassen. Ich mache so etwas wie dies in der Regel:

(in meinem Top-Level-Supervisor)

init([]) ->
    Args = [],
    ModuleArray = [get_info(Module, Args)
           || Module
              <- [emx_nodestate, emx_sup_data, emx_sup_util, emx_sup_api,
                  emx_flow]],
    {ok, {{one_for_one, 3, 1}, ModuleArray}}.

get_info(Module, Args) ->
    {Module, {Module, start_link, [Args]}, permanent, 10000,
     worker, [Module]}.

Und dann so etwas wie emx_sup_data (Verhalten Supervisor) enthält:

init([]) ->
    Args = [],
    ModuleArray = [get_info(Module, Args)
           || Module <- [job_housekeep]],
    {ok, {{one_for_all, 3, 1}, ModuleArray}}.

get_info(Module, Args) ->
    {Module, {Module, start_link, [Args]}, permanent, 10000,
     worker, [Module]}.

und so etwas wie emx_nodestate (Verhalten gen_server)

init([]) ->
    {ok, #state{status=starting, interested=[]}}.

Funktioniert wie ein Traum ...!

Um zu sehen, wie andere Leute ihre Anwendungen strukturieren warum nicht Sie eine Shell anwerfen und die Symbolleiste ausführen:

toolbar:start()

Das gibt Ihnen eine grafische Ansicht eines Supervisors Hierarchie. Ein kurzer Blick auf den Kernel Supervisor Baum oder Mnesia oder giert, wird Ihnen zeigen, was eine ‚normale‘ Supervisor Baum aussieht.

Sie ordnen eine Anwendung von Subsystemen durch eine Anwendung Supervisor überwacht. Jedes Subsystem kann viele Sub-Sub-Systeme unter dem Untersystem Supervisor sein (continue Muster in rekursive funktionaler Weise der Anwendung, bis Sie aus Granularität laufen ...)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top