2010-06-04 8 views
7

Ich benutze Erlang als eine Brücke zwischen den Diensten und ich fragte mich, welchen Rat die Leute für den Umgang mit abgestürzten Verbindungen hatten?Erlang Supervisor-Strategie für den Neustart von Verbindungen zu heruntergestuften Hosts

Ich nehme die Eingabe von lokalen Dateien und leitet sie an AMQP weiter und es ist denkbar, dass der AMQP-Broker untergehen könnte. In diesem Fall möchte ich die Verbindung zum AMQP-Server erneut versuchen, aber ich möchte die CPU nicht mit diesen Verbindungsversuchen verbinden. Meine Absicht ist es, den Neustart des AMQP-Codes zu unterbrechen. Würde das "hacken" nicht im Wesentlichen den Zweck umgehen, schnell zu versagen und erlang damit umgehen zu lassen? Allgemeiner, sollte das Verhalten des Erlang-Supervisors für die Handhabung abgestürzter Verbindungen verwendet werden?

Antwort

3

Ich denke, es ist sinnvoll, eine eigene Semantik für die Handhabung von Verbindungen zu einem externen Server selbst zu programmieren. Supervisors eignen sich am besten für die Behandlung von abgestürzten/gesperrten/anderweitig ungesunden Prozessen in Ihrem eigenen Prozessbaum und nicht für die erneute Verbindung zu einem externen Service.

Ist Ihr Prozess, der die lokalen Dateien im selben Prozessbaum wie der AMQP-Broker versendet, oder handelt es sich um einen separaten Dienst?

+0

stimme ich zu. Vielleicht sollten Supervisoren nicht in die Geschäftslogik einsteigen, sie sind nur da, um tote Prozesse zu behandeln und Dinge konsistent zu halten (one_for_all, one_for_one, etc). Und ja, die Datei Piper und der AMQP-Client-Prozess sind separate Prozesse. Der erlang-amqp-Client erstellt einen Prozess für jede Verbindung (oder ist das der Kanal?), Jetzt muss ich nur noch mit dem Sterben umgehen. Viel zu lernen! – xrl

Verwandte Themen