Erlang Supervisor 重启与宕机主机连接的策略
Posted
技术标签:
【中文标题】Erlang Supervisor 重启与宕机主机连接的策略【英文标题】:Erlang Supervisor Strategy For Restarting Connections to Downed Hosts 【发布时间】:2011-02-27 15:04:59 【问题描述】:我使用 erlang 作为服务之间的桥梁,我想知道人们对处理断开的连接有什么建议?
我从本地文件中获取输入并将它们传送到 AMQP,可以想象 AMQP 代理可能会出现故障。对于这种情况,我想继续重试连接到 AMQP 服务器,但我不想将 CPU 与这些连接尝试挂钩。我的倾向是让 AMQP 代码重新启动时进入睡眠状态。那'hack'不会本质上绕过快速失败并让erlang处理它的目的吗?更一般地说,是否应该使用 erlang 主管行为来处理断开的连接?
【问题讨论】:
【参考方案1】:我认为编写自己的语义来自己处理与外部服务器的连接是合理的。主管最适合处理您自己的进程树中的崩溃/锁定/其他不健康的进程,而不是重新连接到外部服务。
您的进程是在与 AMQP 代理相同的进程树中通过管道传输本地文件还是一个单独的服务?
【讨论】:
我同意。也许主管不应该参与业务逻辑,他们只是在那里处理死流程并保持一致(one_for_all、one_for_one 等)。是的,文件管道和 AMQP 客户端进程是独立的进程。 erlang-amqp-client 为每个连接创建一个进程(或者是那个通道?),现在我只需要处理它的死亡。很多东西要学!以上是关于Erlang Supervisor 重启与宕机主机连接的策略的主要内容,如果未能解决你的问题,请参考以下文章