RabbitMQ技术详解

摘要:一、RabbitMQ是什么 1、定义 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 2、AMPQ AMQP,即Advanced Message Queuing ....

一、RabbitMQ是什么 1、定义

002UASMrzy7605pjKJv15&690.jpg

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

2、AMPQ

AMQP,即AdvancedMessageQueuingProtocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
它可以使对应的客户端(client)与对应的消息中间件(broker)进行交互。消息中间件从发布者(publisher)那里收到消息(发布消息的应用,也称为producer),然后将他们转发给消费者(consumers,处理消息的应用)。由于AMQP是一个网络协议,所以发布者、消费者以及消息中间件可以部署到不同的物理机器上面。

虽然在同步消息通讯的世界里有很多公开标准(如COBAR的IIOP,或者是SOAP等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的MSMQ,IBM的WebsphereMQ等),因此,在2006年的6月,Cisco、Redhat、iMatix等联合制定了AMQP的公开标准。

RabbitMQ是由RabbitMQTechnologiesLtd开发并且提供商业支持的。该公司在2010年4月被SpringSource(VMWare的一个部门)收购。在2013年5月被并入Pivotal。其实VMWare,Pivotal和EMC本质上是一家的。不同的是VMWare是独立上市子公司,而Pivotal是整合了EMC的某些资源,现在并没有上市。

3、同类产品

消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

Redis

是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完成可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时,Redis的性能要高于RabbitMQ,而如否数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

MemcacheQ

持久化消息队列(简称mcq)是一个轻量级的消息队列,特性如下:

简单易用 处理速度快 多条队列 并发性能好 与memcache的协议兼容。意味着只要装了前者的extension即可,不需要额外的插件 在zendframework中使用很方便

MSMQ

这是微软的产品力唯一被认为有价值的东西。如果MSMQ能证明可以应对这种任务,他们将选择使用它。

关键是它并不复杂,除了接收和发送,没有别的;它有一些硬性限制,比如最大消息体积是4MB。 然而,通过和一些想MassTransit或NServiceBus这样的软件的连接,它完全可以解决这些问题。