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. 消息队列的选择?