需要從接收來自其他進程的許多傳入消息的進程實現同步呼叫。區分的問題 - 當呼叫回復到呼叫時。我是否需要產生額外的進程來從隊列中提取消息到緩衝區,而不會遇到返回消息,然後將其發送到主進程,並在其他人接受之後。來自進程的同步呼叫與許多傳入消息
-4
A
回答
0
訣竅是使用引用作爲令牌用於複製:
replicate() ->
{ok, Token} = db:ask_replicate(...),
receive
{replication_completed, Token} ->
ok
end
其中Token
與對make_ref()
一個呼叫建立。由於沒有其他信息會匹配Token
,您是安全的。其他郵件將被放置在郵箱中供以後審查。
但是,上述解決方案並未將進程崩潰考慮在內。您還需要在數據庫服務器上安裝監視器。讓模式正確的最簡單方法是讓介體爲gen_server
。或者,您可以閱讀LearnYouSomeErlang中的章節:http://learnyousomeerlang.com/what-is-otp#the-basic-server查看kitty_server
中的同步呼叫。
相關問題
- 1. Nservicebus同步呼叫
- 2. 不允許傳入呼叫Lync Api或禁用傳入呼叫的聲音
- 3. 星號外呼和來自不同域的入站呼叫
- 4. std :: future.get()多個呼叫(來自不同的線程)
- 5. 來自CDR的同時呼叫
- 6. 使nodejs同步呼叫
- 7. 與nservicebus同步的消息
- 8. 處理來自UdpClient.BeginReceive()的傳入消息()
- 9. 來自iOS應用程序的呼叫
- 10. 取消優異的異步呼叫?
- 11. 進行同步應用程序到電話呼叫(Android)
- 12. 呼叫來電呼叫
- 13. Java RMI:確定來自Callee的呼叫者進程
- 14. 基於來自呼叫
- 15. 保護來自同一應用程序的ReST呼叫
- 16. Chrome擴展的消息傳遞,當XHR呼叫的jQuery
- 17. akka/actor模型中的同步呼叫
- 18. 多次自動呼叫終端程序
- 19. 休息呼叫
- 20. 來自outlook的自動Skype呼叫
- 21. 處理來自後臺的網絡呼叫。蘋果允許嗎?
- 22. 來自客戶端(角度)端的流星方法的同步呼叫
- 23. Android:如何取消/中斷同步服務呼叫?
- 24. 來自回收商視圖列表項的異步呼叫
- 25. 與TPL的兩個不同呼叫的異步響應
- 26. Ext Js Combobox - 同步呼叫設置值
- 27. 斯卡拉來自多個未來呼叫的聚合結果
- 28. 呼叫方法與參數異步
- 29. 呼叫模板功能與異步
- 30. 多進程與進步
我不知道我理解你的問題。 –
假設我已經正確地理解了你的問題 - 但我懷疑它 - 你有幾個進程向單個服務器發送隨機消息,這需要收集(也許處理)消息,直到它收到一條特殊消息,在這種情況下,它會回覆主叫方。你是這個意思嗎? –
我的進程是客戶端和分佈式db節點之間的中介。最終clent可以要求節點之間的複製。在複製期間,不能處理任何對db的請求,它們必須在複製完成後進行緩衝和處理。複製完成觸發器發送消息給介體,但在介體隊列中有很多消息。調解員如何知道他收到有關複製的特殊消息? – Yola