码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ消息队列(一): Detailed Introduction 详细介绍

时间:2015-02-04 16:59:48      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

1. 历史

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue)的开源实现。AMQP的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的IIOP,或者是SOAP等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的MSMQ,IBM的Websphere MQ等),因此,在2006年6月,Cisco,Redhat,iMatix等联合制定了AMQP的公开标准。

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

RabbitMQ的官网是:http://www.rabbitmq.com。

2. 应用场景

对于一个大型的软件系统来说,它会有很多的组件或者说模块或者说子系统。那么这些模块是如何通信的呢?这和传统的IPC有很大的区别。传统的IPC很多都是在单一系统上的,模块耦合性很大,不适合扩展(Scalability);如果使用socket那么不同的模块的确可以部署到不同的机器上,但是还是有很多问题需要解决。比如:

  • 信息的发送者和接收者如何维持这个连接,如果一方的连接中断,这期间的数据如何方式丢失?

  • 如何降低发送者和接收者的耦合度?

  • 如何让Priority高的接收者先接到数据?
  • 如何做到load balance?有效均衡接收者的负载?
  • 如何有效的将数据发送到相关的接收者?也就是说将接收者subscribe不同的数据,如何做有效的filter。
  • 如何做到可扩展,甚至将这个通信模块发到cluster上?
  • 如何保证接收者接收到完整,正确的数据?

AMQP协议解决了以上的问题,而RabbitMQ实现了AMQP。

3. 系统架构



RabbitMQ消息队列(一): Detailed Introduction 详细介绍

标签:

原文地址:http://my.oschina.net/fhd/blog/375267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!