标签:name 结合 接收 使用 中间件 page 数据完整性 打开 系统
一、订阅杂志
我们很多人都订过杂志,其过程很简单。只要告诉邮局我们所要订的杂志名、投递的地址,付了钱就OK。出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中。这样我们就可以看到每一期精彩的杂志了。
仔细思考一下订杂志的过程,我们会发现这样几个特点:1、消费者订杂志不需要直接找出版社;2、出版社只需要把杂志交给邮局;3、邮局将杂志送达消费者。邮局在整个过程中扮演了非常重要的中转作用,在出版社和消费者相互不需要知道对方的情况下,邮局完成了杂志的投递。
二、发布-订阅消息模式
刚刚讲了订阅杂志,下面我们会讲传统调用模式演化到发布-订阅消息模式。
有些网站在注册用户成功后发一封激活邮件,用户收到邮件后点击激活链接后才能使用该网站。一般的做法是在注册用户业务逻辑中调用发送邮件的逻辑。这 样用户业务就依赖于邮件业务。如果以后改为短信激活,注册用户业务逻辑就必须修改为调用发送短信的逻辑。如果要注册后给用户加点积分,再加一段逻辑。经过 多次修改,我们发现很简单的注册用户业务已经越来越复杂,越来越难以维护。相信很多开发者都会有类似痛苦的经历。
发布-订阅消息模式已经呈现在我们面前,利用它可以产生更灵活、更松散耦合的系统。
1.消息(Message)
消息是MQ中最小的概念,本质上就是一段数据,它能被一个或者多个应用程序所理解,是应用程序之间传递的信息载体。
2.队列(Queue)
2.1本地队列
本地队列按照功能可划分为初始化队列,传输队列,目标队列和死信队列。
初始化队列用作消息触发功能。
传输队列只是暂存待传的消息,条件许可的情况下,通过管道将消息传送到其他的队列管理器。
目标队列是消息的目的地,可以长期存放消息。
如果消息不能送达目标队列,也不能再路由出去,则被自动放入死信队列保存。
2.2别名队列&远程队列
只是一个队列定义,用来指定远端队列管理器的队列。使用了远程队列,程序就不需要知道目标队列的位置。
2.3模型队列
模型队列定义了一套本地队列的属性结合,一旦打开模型队列,队列管理器会按照这些属性动态地创建出一个本地队列。
3.队列管理器(Queue Manager)
队列管理器是一个负责向应用程序提供消息服务的机构,如果把队列管理器比作数据库,那么队列就是其中一张表。
4.通道(Channel)
通道是两个管理器之间的一种单向点对点的的通信连接,如果需要双向交流,可以建立一对通道。
5.监听器(listner)
可靠性传输
这个特点可以说是消息中间件的立足之本,对于应用来说,只要成功把数据提交给消息中间件,那么关于数据可靠传输的问题就由消息中间件来负责。
不重复传输
不重复传播也就是断点续传的功能,特别适合网络不稳定的环境,节约网络资源。
异步性传输
异步性传输是指,接受信息双方不必同时在线,具有脱机能力和安全性。
消息驱动
接到消息后主动通知消息接收方。
支持事务
应用程序可以把一些数据更新组合成一个工作单元,这些更新通常是逻辑相关的,为了保障数据完整性,所有的更新必须同时成功或者同时失败)。
标签:name 结合 接收 使用 中间件 page 数据完整性 打开 系统
原文地址:http://www.cnblogs.com/zdd-java/p/7862766.html