我对消息代理(例如RabbitMQ )和面向消息的中间件之间的区别感到有点困惑。除了维基百科上的内容,我找不到太多的信息。在搜索MOM时,我找到了AMQP上的信息,其中说明了MOM的协议。这是什么意思?那妈妈是什么呢?我还了解到RabbitMQ实现了AMPQ协议。那么为什么这会使RabbitMQ成为消息代理呢?消息代理和MOM是一回事吗?
希望一些人能解开我的困惑。谢谢
发布于 2016-05-03 17:00:46
概述-
消息中间件( rules.
正如您所问的:
在搜索MOM时,我找到了关于AMQP的信息,其中说明了MOM的协议..这是什么意思?
MOM是关于在(分布式)系统组件之间具有消息传递中间件(中间层),而AMQP是用于可靠地发送和接收消息的协议(规则集)。因此,MOM实现(即Rabbitmq)可以使用AMQP。
那妈妈是什么呢?
面向消息的中间件是一种方法,一种分布式系统的体系结构,即整个分布式系统的中间层,其中有大量的内部通信(一个组件正在查询数据,然后需要将其发送到另一个组件,后者将对数据进行一些处理),因此组件之间必须共享信息/数据。简而言之,这是一种设计系统的方法,例如:根据总体需求,我们需要开发一个具有一些内部通信的分布式系统。MOM架构/决策的最大优势是组件的解耦,即如果我们要更改数据查询组件,它将不会影响数据处理组件,因为它们通过MOM (例如Rabbitmq集群)进行通信-数据处理组件以消息的形式获取数据,然后对其进行解析和处理。
MOM最终只是一个设计决策,我们使用一个中间件来粘合我们的系统(分布式)组件,一个中间件来处理它们之间的通信,以消息的形式(即JSON)。为了实现面向消息的中间件,我们需要更多的特定规则集,例如消息将如何发布、消费、确认将如何工作、消息的生命周期直至消费、消息的持久性等。AMQP基本上就是这些规则集,即用于实现MOM的标准/协议,即使用AMQP的消息传递系统,这意味着它受所述规则的约束。来自维基百科:
SMTP要求消息传递提供者和客户端的行为达到这样的程度,即来自不同供应商的实现是可互操作的,就像
、HTTP、FTP等创建了可互操作的系统一样。
我还了解到RabbitMQ实现了协议。那么为什么这会使RabbitMQ成为消息代理呢?
是的,Rabbitmq是一个消息代理(publisher -> exchange -> queue -> consumer)。它是一个开源的AMQP实现,即消息传递系统/代理,仅限于AMQP ( AMQP规则)-可以使用Rabbitmq作为中间件,因此使用MOM。
AMQP -只是一组规则,即.how消息将被发布、保存(在队列中)、使用、传递确认等。
是消息代理,而MOM是一回事?
简而言之,是的。如果我们需要为我们的分布式系统使用MOM设计,我们可以简单地使用Rabbitmq (一个消息代理;一个AMQP实现)作为中间件。
发布于 2012-11-04 18:59:34
"MOM“泛指可以将”消息“从一个用户空间应用程序传递到另一个用户空间应用程序的任何技术。与流相比,消息通常被理解为一段离散的信息。
MOM产品过去相当庞大和复杂: CORBA、JMS、TIBCO、WebsphereMQ等,并且试图做更多的事情,而不仅仅是传递消息。
代理是一组特定的路由和排队模式,我们通常在MOM中专门使用术语“代理”(与HTTP、电子邮件、XMPP等相比)。路由意味着,一条消息去往一个对等点、多个对等点中的一个、多个对等点中的所有对等点等等。排队意味着消息被保存在内存或磁盘中,直到它们能够被传递(在某些情况下,被确认)。
AMQP用于指定这些代理模式,因此应用程序可以依赖于任何与AMQP兼容的代理的一致行为(因此,在客户端应用程序中,RabbitMQ和OpenAMQ看起来很相似,就像两个HTTP或两个XMPP服务器看起来一样)。AMQP/1.0只指定了节点之间的连接,因此您没有行为的保证。这使得AMQP/1.0对于公司来说更容易实现,但并没有提供互操作性。
ZeroMQ是面向消息的中间件,它像AMQP/1.0一样定义了各个部分之间的连接,而不是中央代理的行为。然而,使用0MQ编写MOM代理是相对容易的,我们已经做了一些这样的事情(比如Majordomo)。
发布于 2012-11-04 17:52:04
消息代理是一种(相当流行的) MOM。另一种母亲是没有经纪人的母亲,比如ZeroMQ。使用基于代理的MOM,所有消息都会转到一个中心位置:代理,并从那里分发。Broker较少的MOM通常允许对等消息传递(但也不排除中央服务器的选项)。
AMQP是基于代理的MOM协议定义(至少1.0之前的所有版本都是如此,它转向更通用的MOM),并且有几个不同的消息代理实现该协议,RabbitMQ只是其中之一。
https://stackoverflow.com/questions/13202200
复制相似问题