Erlang Supervisor用于重新启动与停机主机的连接的策略
我使用erlang作为服务之间的桥梁,我想知道人们对处理断开的连接有什么建议Erlang Supervisor用于重新启动与停机主机的连接的策略,erlang,behavior,erlang-supervisor,gen-server,Erlang,Behavior,Erlang Supervisor,Gen Server,我使用erlang作为服务之间的桥梁,我想知道人们对处理断开的连接有什么建议 我正在从本地文件中获取输入,并将它们输出到AMQP,可以想象,AMQP代理可能会崩溃。在这种情况下,我希望继续尝试连接到AMQP服务器,但我不希望CPU与这些连接尝试挂钩。我倾向于在AMQP代码重新启动时休眠。这种“黑客行为”从本质上来说不会绕过快速失败并让erlang处理的目的吗?更一般地说,erlang supervisor行为是否应该用于处理断开的连接?我认为自己编写语义代码来处理与外部服务器的连接是合理的。主管
我正在从本地文件中获取输入,并将它们输出到AMQP,可以想象,AMQP代理可能会崩溃。在这种情况下,我希望继续尝试连接到AMQP服务器,但我不希望CPU与这些连接尝试挂钩。我倾向于在AMQP代码重新启动时休眠。这种“黑客行为”从本质上来说不会绕过快速失败并让erlang处理的目的吗?更一般地说,erlang supervisor行为是否应该用于处理断开的连接?我认为自己编写语义代码来处理与外部服务器的连接是合理的。主管最适合处理自己的流程树中崩溃/锁定/其他不健康的流程,而不是重新连接到外部服务
您的流程是将本地文件作为管道传输到与AMQP代理相同的流程树中,还是单独的服务?我同意。也许主管不应该介入业务逻辑,他们只是在那里处理死气沉沉的流程,保持事情的一致性(一对一,一对一,等等)。是的,文件piper和AMQP客户端进程是分开的进程。erlang amqp客户端为每个连接(或者是通道?)创建一个进程,现在我只需要处理它。有很多东西要学!