面向消息的中间件与消息队列

时间:2014-08-07 09:20:07

标签: rabbitmq message-queue nservicebus servicebus rebus

我想知道如何区分哪些软件是面向消息的中间件和什么是消息队列?

更进一步 - 服务总线使用队列还是面向消息的中间件?或者服务总线可能是面向消息的中间件本身?

例如,RabbitMQ只是消息队列还是包含面向消息的中间件功能?

这个词似乎很模糊。请指教。谢谢:))

1 个答案:

答案 0 :(得分:2)

根据维基百科:

  

Message-oriented middleware (MOM)是   支持发送和接收的软件或硬件基础设施   分布式系统之间的消息。

  

在计算机科学中,message queues和邮箱是   用于进程间通信的软件工程组件   (IPC),或用于同一进程内的线程间通信。

我会将消息队列描述为较低的抽象,就像消息的组织,存储和传递概念一样。

对于面向消息的中间件,消息队列不是必须的。比如,您可以让MOM广播任何消息,而不关心网络或任何其他延迟或潜在的故障和消息丢失。在这种情况下,不保证邮件传递和传递顺序。当然,这是非常具体的用例,但是这样的软件(或硬件)可以称为MOM。

因此,RabbitMQ本身就是面向消息的中间件。在内部,它利用FIFO队列进行消息存储。维基百科也说了同样的话:

  

RabbitMQ 是开源消息代理软件(有时称为   实现高级消息的面向消息的中间件   排队协议(AMQP)。在

对于NServiceBus,它使用MOM(by default MSMQ,但您也可以启用other transport support (如RabbitMQ或其他)作为其传输,因此,它使用消息队列概念和MOM本身。根据定义,NServiceBus是MOM本身(比大多数传输MOM的级别更高)。

所以NServiceBus更像是建筑概念,在各种MOM之上的抽象。如需进一步阅读,请参阅此处有关SO的Specific advantages of NServiceBus over plan RabbitMQ问题,这有助于获得NServiceBus的想法。