2010-06-04 12 views
7

Estoy usando erlang como un puente entre los servicios y me preguntaba qué consejos tenían las personas para manejar las conexiones caídas.Estrategia de Erlang Supervisor para reiniciar conexiones a hosts reducidos

Estoy tomando datos de los archivos locales y enviándolos a AMQP, y es posible que el intermediario de AMQP pueda fallar. Para ese caso, me gustaría volver a intentar conectarme al servidor AMQP, pero no quiero vincular la CPU con esos intentos de conexión. Mi inclinación es poner un sueño en el reinicio del código AMQP. ¿No 'piratearía' esencialmente eludir el propósito de fallar rápidamente y dejar que erlang lo maneje? En términos más generales, ¿se debe usar el comportamiento de supervisor de erlang para manejar conexiones caídas?

Respuesta

3

Creo que es razonable codificar su propia semántica para manejar las conexiones a un servidor externo usted mismo. Los supervisores son los más adecuados para manejar procesos bloqueados/bloqueados/no saludables en su propio árbol de procesos, no reconexiones a un servicio externo.

¿Es su proceso que canaliza los archivos locales en el mismo árbol de procesos que el intermediario AMQP o es un servicio separado?

+0

Estoy de acuerdo. Tal vez los supervisores no deberían jugar en la lógica de negocios, solo están ahí para manejar procesos muertos y mantener las cosas consistentes (one_for_all, one_for_one, etc.). Y sí, el archivo piper y el proceso del cliente AMQP son procesos separados. Erlang-amqp-client crea un proceso para cada conexión (¿o es ese canal?), Ahora solo necesito manejarlo muriendo. ¡Mucho por aprender! – xrl

Cuestiones relacionadas