5
A
回答
-1
正如我所看到的,Message Passing描述了一個協議,而消息隊列是一個實現細節。
請考慮以下事項: 您的應用程序通過傳遞消息交換數據的方式明確。這意味着您已經實現了一個協議,該協議描述了可以發送什麼消息以及應用程序如何響應。這就是我本質上稱之爲消息傳遞的原因。
現在,您可能已經通過多種方式實現了這一點。
- 您可能已經告訴您的應用程序接收消息,對其進行處理並將答案傳回,並在此期間完全忽略其他傳入的消息。
- 您可以告訴您的應用程序的每個線程的一個消息,工作,使用專用線程監聽傳入消息
隊列將是接收與消息傳遞和交付您的協議的消息一實施存儲它們。這使得它們可以按照它們到達的順序逐個提供給應用程序的內部。但還有更多。
- 隊列可以查詢其他隊列
- 隊列可能需要一定的消息轉發到另一個隊列
- 一個隊列被多個客戶端或轉發一條消息,詢問不止一個客戶端
所以消息傳遞只是一種說法:「我有這條指令或者我想要交給某人的代碼塊」。表示消息隊列的程序是消息的接收者,並且可以向其應用附加的邏輯。
3
消息傳遞是一個非常通用的術語。它可以從不同的方面進行檢查,其中的一個是如何將數據從發送方傳輸到接收器:
同步消息傳遞:發送器和接收器具有以「滿足」在其各自的
send
/receive
操作,以便可以傳輸數據。這也被稱爲「交會」或「握手」。這種傳輸方式很簡單,但可能效率低下,因爲發件人可能必須等待,即使它已完成其職責並準備好要發送的數據。異步消息傳遞:發送者不等待接收器達到其
receive
操作,而是擺脫了準備的數據,並繼續執行。這種傳輸形式不會強制發送者等待,但會產生另一個問題:可能有已經發送但尚未收到的消息,並且它們必須存儲在某處。這是消息隊列起作用的地方,它們是在途消息的緩衝區。
因此,您的問題的答案是,當消息傳遞是異步完成而不是同步完成時,使用/需要消息隊列。
相關問題
- 1. 使用消息隊列在進程之間傳遞消息
- 2. (消息傳遞)隊列如何擴展?
- 3. JMS消息重新傳遞到隊列
- 4. 消息隊列:每條消息保證
- 5. 消息隊列中的多條消息
- 6. 消息傳遞與boost :: threads?
- 7. 消息傳遞與鎖定
- 8. Websphere消息隊列
- 9. 消息從隊列
- 10. Sinatra消息隊列
- 11. Boost消息隊列
- 12. unix消息隊列
- 13. IPC - 消息隊列
- 14. 消息隊列ENOMEM
- 15. ServiceStack Redis消息傳遞 - 即時消息?
- 16. Google雲消息傳遞消息隱私
- 17. Android消息傳遞
- 18. 使用ISO8583消息的消息隊列與TCP
- 19. MVC的傳出消息隊列
- 20. Firebase消息傳遞錯誤:消息傳遞/權限被阻止
- 21. EAI - 消息傳遞橋與消息轉換器
- 22. 靜態消息隊列
- 23. 隊列中沒有消息
- 24. 消息隊列設計
- 25. WinAPI消息隊列示例
- 26. 多主題消息隊列
- 27. 錯誤消息隊列
- 28. 消息隊列實現
- 29. NServiceBus消息隊列建立
- 30. 消息隊列的選擇?