消息代理与MOM(消息
对于消息代理(如RabbitMQ和面向消息的中间件)之间的区别,我有点困惑。 除了维基百科上的内容外,我无法找到许多信息。 当搜索妈妈时,我发现AMQP的信息是哪种状态是MOM的协议。这是什么意思? 什么是MOM呢? 我也读过RabbitMQ实现AMPQ协议..那么,为什么RabbitMQ会成为一个消息传递者? 消息中介和MOM是同一件事吗?
希望有人能解开我的困惑。 谢谢
“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)。
概述 -
RabbitMQ是一种开源消息代理软件(有时称为消息中间件),它实现了高级消息队列协议(AMQP)。
正如你所问:
当搜索妈妈时,我发现AMQP的信息是哪种状态是MOM的协议。这是什么意思?
MOM是关于在(分布式)系统组件之间建立消息传递中间件(中间层),AMQP是用于可靠地发送和接收消息的协议(规则集)。 所以,一个MOM实现(即Rabbitmq)可能会使用AMQP。
什么是MOM呢?
面向消息的中间件 - 是一种方法,即分布式系统的体系结构,即整个分布式系统的中间层,其中有很多内部通信(一个组件正在查询数据,然后需要将它发送给另一个组件,将对数据进行一些处理),因此组件必须共享其中的信息/数据。 总之,这是一种设计系统的方法,例如:根据我们开发分布式系统所需的总体要求,以及一些内部通信。 MOM体系结构/决策的最大优势是组件的解耦,即如果我们要更改数据查询组件,它将不会影响数据处理组件,因为它们通过MOM(例如Rabbitmq Cluster)进行通信 - 数据处理组件正在获取表单消息中的数据,然后解析并处理它们。
最后的MOM只是一个设计决策,我们使用中间件来粘合我们的系统(分布式)组件,这是一个用于处理它们之间通信的中间件,以消息的形式(即JSON)。 为了实现一个面向消息的中间件,我们需要更多的特定规则,例如消息如何被发布,消费,确认如何工作,消息的生命周期直到它被消费,消息的持久性等AMQP基本上就是这些规则集,即用于实现MOM的标准/协议,即使用AMQP的消息传递系统,意味着它按照规定的规则进行限制。 维基百科:
AMQP强制消息传递提供者和客户端的行为达到了不同供应商的实现可互操作的程度,就像SMTP,HTTP,FTP等创建可互操作的系统一样。
我也读过RabbitMQ实现AMPQ协议..那么为什么RabbitMQ成为消息代理?
是的,Rabbitmq是一个消息代理(发布者 - >交换 - >队列 - >消费者)。 这是一个开源的AMQP实现,即一个限制在AMQP(AMQP规则)中的消息系统/代理 - 可以使用Rabbitmq作为中间件,因此可以使用MOM。
AMQP - 仅仅是一组规则,即。消息将如何发布,保持(排队),消耗,送达确认等。
消息中介和MOM是同一件事吗?
简而言之,是的。 如果我们需要在分布式系统中使用MOM设计,我们可以简单地使用Rabbitmq(消息代理; AMQP实现)作为中间件。
消息代理是一种(颇受欢迎的)类型的MOM。 另一种MOM将是无代理的MOM,就像ZeroMQ一样。 通过基于经纪人的MOM,所有消息都会发送到一个中心位置:经纪商,并从那里分发。 代理少MOM通常允许点对点消息传递(但不排除中央服务器的选项)。
AMQP是基于代理的MOM协议定义(至少1.0之前的所有版本都可以进入更通用的MOM),并且有几种不同的Message Broker实现该协议,RabbitMQ就是其中之一。
链接地址: http://www.djcxy.com/p/34113.html上一篇: Message broker vs. MOM (Message
下一篇: Where are the AMQP 1.0 implementations? Would it make sense to wait?