消息队列的选型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
目录
...........................................................................................................................
1
1消息队列的概述......................................................................................................2
1.1消息的概念............................................................................................................................2
1.2消息的队列的概念................................................................................................................2
1.3消息队列的概念....................................................................................................................3
2AMQP..........................................................................................................................4
2.1AMQP........................................................................................................................................4
2.2AMQP历史...............................................................................................................................4
2.3AMQP的架构...........................................................................................................................5
2.4AMQP的概念...........................................................................................................................5
3常用消息队列选型..................................................................................................7
3.1RabbitMQ................................................................................................................................7
3.2ZeroMQ...................................................................................................................................8
3.3Qpid.........................................................................................................................................8
3.4MetaQ......................................................................................................................................9
3.5ActiveMQ................................................................................................................................9
3.6OpenMQ................................................................................................................................11
3.7MemcacheQ..........................................................................................................................12
4队列参数比较.......................................................................................................14
1
消息队列的概述
1.1消息的概念
1.消息的概念:消息是由通信双方所需要传递的信息,它可以是各式
各样的媒体,如文本、声音、图像等消息,最终的理解方式为,消
息传递的双方事先商定这样做的好处是:一是相当于对数据进行了
简单的加密,二采用自己定义的格式可以节省通信的传递量。
2.消息可以含有发送和接收者的标识,这样只有指定的用户才能看到
只传递给他的信息和返回是否操作成功的回执。
3.消息也可以含有时间戳,以便接收方对某些与时间相关的应用进行
处理消息,还可以含有到期时间,它表明如果在指定时间内消息还
未到达则此消息作废,这主要用于与时间性关联较为紧密的应用。
1.2消息的队列的概念
1.存储的概念:消息队列是发送和接收消息的公用存储空间,它可以
存在于内存中或者是物理文件中。
2.消息的发送方式:消息可以以两种方式发送,即快递方式和可恢复
模式,它们的区别在于,快递方式为了消息的快速传递把消息放置
于内存中,而不放于物理磁盘上,以获取较高的处理能力;可恢复
模式在传送过程的每一步骤中,都把消息写入物理磁盘中,以得到
较好的故障恢复能力。
3.消息队列的存贮所在:可以放置在发送方、接收方所在的机器上,
也可以单独放置在另外一台机器上。正是由于消息队列在放置方式
上的灵活性,形成了消息传送机制的可靠性。当保存消息队列的机
器发生故障而重新启动以后,以可恢复模式发送的消息,可以恢复
到故障发生之前的状态,而以快递方式发送的消息则丢失了。另一
方面,采用消息传递机制,发送方不要再担心接收方是否启动、是
否发生故障等非必要因素,只要消息成功发送出去就可以认为处理
完成。而实际上对方可能甚至未曾开机,或者实际完成时可能已经
是第二天了。
4.采用消息队列技术带来的好处是:由于是异步通信,无论是发送方
还是接收方都不用等待对方返回成功消息就可以执行余下的代码,
因而大大提高了事物处理的能力;在信息传送过程中,信息发送机
制具有一定功能的故障恢复能力;消息传递机制使得消息通信的双
方具有不同的物理平台成为可能。
1.3消息队列的概念
1.消息队列是在多个不同的应用之间实现相互通信的一种异步传输模
式,相互通信的应用可以分布于同一台机器上,也可以分布于相连
的网络空间中的任一位置。
2.实现原理:是消息的发送者把自己想要发送的信息放入一个容器中
(称为Message),然后把它保存至一个系统公用空间的消息队列中;
本地或者是异地的消息接收程序再从该队列中取出发给它的消息进
行处理。
2
AMQP
2.1AMQP
AMQP是AdvancedMessageQueuingProtocol,即高级消息队列协议。
和前面罗列的技术不同,AMQP是一个标准化的消息中间件协议。她的
理想是让不同语言,不同系统的应用互相通信,并提供一个简单统一的
模型和编程接口。这样,人们就可以采用各种语言和平台来实现自己的
应用,当需要和其他系统通信时,只要承认AMQP协议即可。
2.2AMQP历史
AMQP来自JPMorgon,最初只是这个财大气粗的投行内部使用的消
息中间件(注意:它变成了一个支持这个协议的标准实现)。发起人John
O'Hara很有气魄,他说“从1996年开始到2003我一直在等这样一个
标准,但始终没有等到,我已经等不下去了”,并且“投行对这类标准的
需求最迫切,而银行又从来不缺乏技术专家”,所以他自己开发了一个。
我想一个人如果想成就什么事,就需要这样的英雄气概吧。因为他的努
力,AMQP从金融界迅速推广到整个计算机行业,参与者包括了很多IT
巨头。虽然今天AMQP依旧是一个草案,但值得我们拭目以待,AMQP目
前还是一个草案,最新版本是0.10
2.3AMQP的架构
图2-1AMQP架构
2.4AMQP的概念
表2-1AMQP概念表
概念
角色描述
Producer
消息生产
者
一个给exchange发送消息的程序,发送方式大致是:
它首先创建一个空消息,然后填上内容、路由KEY,
最后发送给exchange
RoutingKey正向过滤
key、消息
特征
一个字符串,exchange用之来决定应该该消息投递
给哪个queue。(开始时queue已向exchange绑定
它所关心消息的routingKey)
Exchange
交换器
接收来自producers的消息,并根据该消息的
routingKey和绑定的routingKey,将该消息投递到
正确的queues
Binding
绑定操作
前期将queue所想要的消息特征告诉exchange。
Exchange以后收到消息,就按照这个规则来投递。
Queue
MQClient
在
MQserver
的直接面
对
在MQserver(实现为broker方式)里面的queue,持
有MQclients想要的消息。