2012-11-02 24 views
16

我对消息代理(例如, RabbitMQ和面向消息的中间件。除了维基百科上的内容外,我无法找到许多信息。当搜索妈妈时,我发现AMQP的信息是哪种状态是MOM的协议。这是什么意思?什么是MOM呢?我也读过RabbitMQ实现AMPQ协议..那么,为什么RabbitMQ会成为一个消息传递者?消息中介和MOM是同一件事吗?消息代理与MOM(面向消息的中间件)

希望有人能解开我的困惑。谢谢

回答

6

消息代理是一种(非常流行)类型的MOM。另一种MOM将是无代理的MOM,就像ZeroMQ一样。通过基于经纪人的MOM,所有消息都会发送到一个中心位置:经纪商,并从那里分发。代理少MOM通常允许点对点消息传递(但不排除中央服务器的选项)。

AMQP是基于代理的MOM协议定义(至少1.0之前的所有版本都是漂移到更通用的MOM中),并且有几种不同的Message Brokers实现该协议,RabbitMQ就是其中之一。

10

“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)。

9

概述 -

  • 协议 - 一组规则。
  • AMQP - AMQP是一个开放的互联网协议,可靠地发送和接收消息。
  • MOM(面向消息的中间件) - 是一种方法,即分布式系统的体系结构,即整个分布式系统的中间层,其中有很多内部通信(一个组件正在查询数据,然后需要将它发送给另一个组件,这将对数据进行一些处理),所以组件必须在它们之间共享信息/数据。
  • 消息中介 - 是处理消息(发送以及接收)的任何系统(在MOM中),或者是将消息路由到特定消费者/接收者的更精确的系统。 Message Broker通常建立在MOM之上。 MOM提供应用程序之间的基础通信,以及诸如消息持久性和有保证的交付之类的内容。 “消息代理是面向消息中间件的基石。”
  • Rabbitmq - 消息代理; MOM实施; AMQP的开源实现;按照百科:

    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实现)作为中间件。