我想知道如何区分什么软件是面向消息的中间件,什么是消息队列?
更进一步——服务总线使用队列还是面向消息的中间件?或者服务总线本身就是面向消息的中间件?
例如,RabbitMQ 只是消息队列还是它还包含面向消息的中间件功能?
这个术语似乎是嗡嗡声和模糊的。请指教。谢谢 :)
我想知道如何区分什么软件是面向消息的中间件,什么是消息队列?
更进一步——服务总线使用队列还是面向消息的中间件?或者服务总线本身就是面向消息的中间件?
例如,RabbitMQ 只是消息队列还是它还包含面向消息的中间件功能?
这个术语似乎是嗡嗡声和模糊的。请指教。谢谢 :)
根据维基百科:
面向消息的中间件 (MOM)是支持在分布式系统之间发送和接收消息的软件或硬件基础设施。
和
在计算机科学中,消息队列和邮箱是用于进程间通信 (IPC) 或同一进程内的线程间通信的软件工程组件。
我会将消息队列描述为较低的抽象,就像消息如何组织、存储和传递的概念一样。
对于面向消息的中间件,消息队列不是必须的。比如说,您可以让 MOM 广播任何消息,而不关心网络或任何其他延迟或潜在故障和消息丢失。在这种情况下,无法保证消息传递和传递顺序。当然,这是一个非常具体的用例,但这样的软件(或硬件)可以称为 MOM。
所以RabbitMQ本身就是面向消息的中间件。在内部,它利用 FIFO 队列进行消息存储。维基百科也这么说:
RabbitMQ是实现高级消息队列协议 (AMQP) 的开源消息代理软件(有时称为面向消息的中间件)。这
至于 NServiceBus,它使用 MOM(默认为 MSMQ,但您也可以启用其他传输支持,如 RabbitMQ 或其他)作为其传输,所以是的,它利用消息队列概念和 MOM 本身。根据定义,NServiceBus 是 MOM 本身(比大多数传输 MOM 更高级别)。
所以 NServiceBus 更像是架构概念,抽象在各种 MOM 之上。如需进一步阅读,请参阅关于 SO的 NServiceBus 相对于计划 RabbitMQ 问题的具体优势,这有助于了解 NServiceBus 的想法。