【发布时间】:2014-06-17 03:14:13
【问题描述】:
我们正在重新组织我们的应用程序监督树,以使其更稳健地处理故障和重新启动。但是,我们有一个场景,我们有一个父主管启动四个子主管。我们遇到的问题是,第一个子主管启动了几个子 gen_server,这些子 gen_servers 必须在第二个子主管启动之前启动和初始化,否则它将失败。
所以,我需要一个像下面这样的创业公司:
test_app.erl -> super_supervisor -> [config_supervisor, auth_supervisor, rest_supervisor]
我遇到的问题是 config_supervisor 必须在 auth_supervisor 或 rest_supervisor 启动之前完成所有初始化。使用 rest_for_one 启动策略,我基本上得到了这种行为,但只能通过允许 auth_supervisor 失败,因为所需的配置不存在。我宁愿只要求 config_supervisor 完成初始化(包括启动几个 gen_servers),然后再转到 auth_supervisor。
这似乎是以前可以克服的常见情况,但是我很难“谷歌搜索”解决方案。是否有人有可能存在的建议或示例代码来处理这种情况?
【问题讨论】:
标签: functional-programming erlang erlang-otp erlang-supervisor