2016-11-11 55 views
0

我有兩個genserver實現,它們都通過發出http請求來執行查找,並且都返回相同的信息,它們使用不同的提供程序來執行此操作。Supervisor產生的進程在發生故障時故障轉移到其他進程

我想弄清楚一種方式,我可以讓第一個進程運行,當失敗或驗證失敗時,這個進程會故障轉移到第二臺使用不同提供程序的genserver。

基本上我要完成的是各種各樣的故障轉移過程:嘗試過程中A和,如果A失敗嘗試的過程B.

你有什麼建議將着手在做藥劑的最佳方式?

回答

1

您可以創建另一個接收HTTP請求的代理進程(管理器),並決定process_A或process_B是處理此請求,然後在故障轉移時執行故障轉移到其他進程。

換句話說,我認爲工作進程不是處理故障轉移的工作,管理進程應該接管它。

+0

謝謝,我完全同意。你會如何建議我做代理進程管理器? – Zac

+0

看看這裏的elixir指南,http://elixir-lang.org/getting-started/mix-otp/genserver.html#the-need-for-monitoring,你可以讓你的代理進程管理器啓動process_A和_B並監視它們。在handle_call中完成可能會非常棘手。我沒有嘗試過類似的東西。 –