如果一個服務器通過使用pid從一個進程接收多個請求! Msg,但每個請求的處理時間不同,那麼如何保證發件人收到回覆的順序?如何保證Erlang中的消息隊列/訂單?
1
A
回答
6
10.8是信息接收的順序保障?
是的,但只在一個過程中。
如果有一個實時進程,並且發送消息A然後發送消息B,則保證如果消息B到達,則消息A在它之前到達。
另一方面,設想進程P,Q和R. P將消息A發送給Q,然後將消息B發送給R.不能保證A在B之前到達。(分佈式Erlang會有一段相當困難的時間如果這是必需的!)
也就是說,如果服務器按照它們到達的順序處理請求,並按處理請求的順序發送響應,那麼發送方將按順序接收響應。
0
erlang 收到子句可以做模式匹配。所以你可以做的是爲你想要接收的每條消息創建一個參考,然後對該參考進行模式匹配。
看看這個gist如果你看第26行,你會看到receive子句正在等待帶有特定pid的消息。在這種情況下,消息將以任意順序到達,但憑藉此接收,它們將被整理。
相關問題
- 1. 消息隊列:每條消息保證
- 2. JMS隊列消息接收訂單
- 3. 如何保留消息隊列
- 4. 有消息隊列訂閱主題
- 5. 簡單拉消息隊列
- 6. 如何保證ReactiveCocoa中訂閱者消息的順序?
- 7. Erlang(Comet聊天)中的消息隊列模型?
- 8. 如何查看隊列中的消息
- 9. 消息隊列中的多條消息
- 10. 如何在Mule ESB中保存包含Java消息的隊列?
- 11. 如何在Erlang中創建一個內存綁定的消息隊列?
- 12. Erlang消息隊列在進程中是否持久?
- 13. PHP中的消息隊列
- 14. java中的消息隊列
- 15. linux中的消息隊列
- 16. NServiceBus - 如何爲每個消息類型接收器訂閱的單獨隊列?
- 17. 從rabbitmq隊列中獲取一條消息並取消訂閱
- 18. 如何從隊列中刪除消息?
- 19. 如何統計窗口消息隊列中的消息?
- 20. 如何查看出站MSMQ消息隊列中的消息?
- 21. 如何從隊列/訂閱向接收者發送消息?
- 22. PHP驗證錯誤消息訂單
- 23. 從隊列中獲取消息只檢索單條消息
- 24. 隊列中沒有消息
- 25. Websphere消息隊列
- 26. 消息從隊列
- 27. Sinatra消息隊列
- 28. Boost消息隊列
- 29. unix消息隊列
- 30. IPC - 消息隊列