Pregunta

¿Es posible conectar supervisores en cascada dentro de una aplicación?

P.ej.supervisor sup1 generando un proceso hijo que crea un supervisor sup2 ?

¿Fue útil?

Solución

Es posible que desee agregar al niño como supervisor.

Es una entrada en la childspec de un niño de un supervisor. El "tipo" de que el niño se puede ajustar a "supervisor":

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

Probablemente usted puede hacerlo a través del niño que comienza un supervisor en sí también, pero por lo menos es menos elegante y es menos evidente lo que está haciendo.

HTH, h.

Otros consejos

Sí, sólo tiene que añadir los supervisores como hijos de un supervisor. O mezclar y combinar. Hago algo como esto por lo general:

(en mi top supervisor de nivel)

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]}.

Y entonces algo así como emx_sup_data (supervisor de la conducta) contiene:

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]}.

y algo así como emx_nodestate (comportamiento gen_server)

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

funciona como un sueño ...!

Para ver cómo otras personas estructuran sus aplicaciones, ¿por qué no inicia un shell y ejecuta la barra de herramientas?

toolbar:start()

Eso le brinda una vista gráfica de una jerarquía de supervisores.Un vistazo rápido al árbol supervisor del kernel, o mnesia o yaws, le mostrará cómo es un árbol supervisor "normal".

Usted compone una aplicación de subsistemas supervisados ​​por un supervisor de aplicaciones.Cada subsistema puede tener muchos subsistemas bajo el supervisor del subsistema (continúe aplicando el patrón de manera funcional recursiva hasta que se quede sin granularidad...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top