【问题标题】:Add a dynamic supervisor to ejabberd将动态主管添加到 ejabberd
【发布时间】:2011-11-26 12:35:07
【问题描述】:

是否可以在 ejabberd 中启动一个主管模块,我可以为每个连接添加一个 gen_fsm 模块?

具体来说,我想创建一个在服务器启动(或连接进入)时启动的主管。我有几个gen_servers 我想开始,但我正在寻找一些指导的部分是当我看到这个用户的存在变得可用时如何动态地将gen_fsm 模块添加到我的主管?

【问题讨论】:

    标签: erlang ejabberd erlang-otp


    【解决方案1】:

    您可能想看看Simple one for on supervisor,其中:

    是一个简化的 one_for_one 主管,其中所有子进程都是 动态添加同一进程的实例

    ...

    启动时,主管不会启动任何子进程。相反,所有的孩子 通过调用动态添加进程:

    supervisor:start_child(Sup, List)

    ...

    基本上,您在以下情况下使用这种监管者:

    1. 所有孩子都是同一类型
    2. 您想动态添加子项

    这似乎是你的情况。

    【讨论】:

    • +1,还要注意 ejabberd 已经在一些模块上做到了这一点,包括 ejabberd_c2s
    猜你喜欢
    • 2020-06-24
    • 2019-04-27
    • 1970-01-01
    • 2010-12-29
    • 2019-08-28
    • 2012-10-22
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多