2010-06-04 60 views
7

我使用erlang作爲服務之間的橋樑,並且我在想,人們對於處理連接斷開有什麼建議?Erlang主管重新連接被關閉主機的策略

我從本地文件獲取輸入並將它們輸出到AMQP,並且可以想象AMQP代理可能會關閉。對於這種情況,我想繼續重試連接到AMQP服務器,但我不想用這些連接嘗試掛鉤CPU。我的意圖是讓AMQP代碼重新啓動。這種「黑客」是不是基本上繞過了快速失敗並讓erlang處理它的目的?更一般地說,erlang監督者行爲是否應該用於處理連接斷開?

回答

3

我認爲編寫自己的語義來處理與外部服務器的連接是合理的。主管最適合處理您自己的流程樹中崩潰/鎖定/不健康的流程,而不是重新連接到外部服務。

您的流程是否在與AMQP代理相同的流程樹中管理本地文件,或者它是單獨的服務?

+0

我同意。也許主管不應該參與業務邏輯,他們只是在那裏處理死亡進程並保持一致(one_for_all,one_for_one等)。 是的,文件piper和AMQP客戶端進程是獨立的進程。 erlang-amqp-client爲每個連接創建一個進程(或者是那個通道?),現在我只需要處理它即將死亡。很多學習! – xrl 2010-06-07 16:59:49

相關問題