- 1. 第四章 消息中间件
Message-OrientedMiddleware 为什么选择消息中间件?----利用MQ message queuing实现企业间的数据交换----实现企业级大规模数据传送---部署规模庞大
---网络状况复杂
---数据量大
---系统维护管理复杂----分布式对象技术局限性
- 2. 图来源:www.ibm.comWebSphere MQ
- 3. 1. 消息中间件概念消息中间件作为一个中间层软件,它为分布式系统中创建、发送、接收消息
提供了一套可靠通用的方法,实现了分布式系统中可靠的、高效的、实时的
跨平台数据传输。 面对规模和复杂度都越来越高的分布式系统,消息中间件技术显示出了它的
优越性: 采用异步通信模式 客户和服务对象生命周期的松耦合关系 MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基
于数据通信来进行分布式系统的集成。
- 4. 2. MOM特点消息传递和排队技术有以下三个主要特点: 1. 通讯程序可在不同的时间运行。 2. 对应用程序的结构没有约束。 3. 程序与网络复杂性相隔离。 MOM特点:时间独立性、安全可靠、支持多种数据传送、断点续传、数据压缩等
- 5. 3.1 消息传递服务模型应用程序A应用程序B消息中间件接口发送队列接受队列通道代理网络消息中间件接口
通道代理
发送队列
接受队列3. 消息传递概述MOM中间件
- 6. 3.2 点到点的消息传递(point to point messaging)消息由发布者发送到特定的接收者。Client 1QueueClient 2SendsMsgConsumesAcknowledges点到点消息队列服务Msg
- 7. 3.3 发布/订阅消息传递(publish/subscribe messaging)消息发布者可以将消息发布到主题(Topic), 用户或应用程序根据主题或
内容接收消息。Client 1TopicClient 2Client 3PublishesMsgDeliversSubscribesDeliversSubscribesMsgMsg发布/订阅消息传递服务
- 8. 3.4 推/拉消息传递模型推消息模型:消息生产者将消息发送给消息传递服务,消息传递服务
又将消息推给消息消费者。拉消息模型:消费者请求消息服务接收消息,消息服务从消息生产者拉
该消息。
- 9. (本页无文本内容)
- 10. 4. WebSphere MQ1.2.1 MQ的基本概念
队列管理器 manager:
MQ系统中最上层的概念,由它提供基于队列的消息服务。2. 消息 message在MQ中,把应用程序交由MQ传输的数据定义为消息。
例如:用户各种类型的数据文件、某个应用向其他应用发出的处理请求
- 11. 消息由两部分组成:消息描述符(Message Header),描述消息的特征,如:消息的优先级
生命周期、消息ID、路由信息等。2. 消息体(Message Body),即用户数据部分。消息描述符用户数据消息分类:
报文消息
请求/应答消息
报告消息支持消息最大长度为100MB非持久性(non-persistent)消息,存储在内存中,是为提高性能而设计的。持久性(persistent)消息,存储在硬盘中,并且记录数据日志,高可靠性。用户数据MQ不关心//在MQ中,还有逻辑消息和物理消息的概念
- 12. a. 队列 queue
队列是消息安全存放地,队列存储消息直到它被应用程序处理。程序A程序B队列管理者消息队列 1消息队列 2程序CMQI消息通道
管理器消息通道
管理器队列管理者消息队列 MQI网络MQ中,队列分为很多种类型包括:本地队列、远程队列、模板队列、动态队列、
死信队列等。
- 13. b. 通道 channel通道是MQ系统中队列管理器之间传递消息的管道。通道分类:1. 消息通道:用于在MQ服务器和服务器之间传输消息,该通道是单向的。2. MQI通道:MQ Client和MQ Server之间的传输消息,它的传输是双向的。3. 群集(Cluster)通道:是位于同一个MQ群集内部的队列管理器之间的通信。发送器
通道SDR接收器
通道RCVRStart ChannelSend Message消息通道中最常用SDR/RCVRSenderReceiver
- 14. 通道是MQ的关键,主要包括手动方式启动和自动方式(触发)启动。 手动方式:手动方式维护有两个通道参数值得注意: 1)DISCINT(Disconnect Interval, 断开间隔) 2)HBINT(Heart Beat Interval,心跳间隔)当传输队列中没有消息要传送时, 发送方通道(SDR)、服务器通道(SVR)
将在等待了该 参数指定的时间间隔后断开连接,停止通道。当传输队列中没有消息要传送时,发送方通道(SDR)、服务器通道(SVR)定时
向对方发送心跳测试信号,双方通道借这个信号作消息发送事务的同步(quiesce)。
- 15. 4.1 MQ的基本配置举例
在DOS环境下进入MQ的安装目录/bin示例一(本机SDR通道, 接受端RCVR通道)
在发送方A (本机:127.0.0.1)1) 建立队列管理器QMA: crtmqm QMA //删除队列管理器 dltmqm QMA
2)启动队列管理器strmqm QMA //停止队列管理器 endmqm QMA 运行MQSeries命令runmqsc QMA
3) 定义本地传输队列: define qlocal (QAQB) usage (xmitq) defpsist(yes)
4) 创建远程定义: define qremote (QR.TOB) rname (LQB) rqmname (QMB) xmitq (QAQB)
//远程定义(本地队列管理器):QR.TOB//远程队列名称:LQB//远程队列管理器名称:QMB//传输队列名称:QAQB
- 16. 5) 定义死信队列
ALTER QMGR DEADQ(QMA.DEADQ) DEFINE QL(QMA.DEADQ) REPLACE
6) 定义发送通道: define channel (A.TO.B) chltype (SDR) conname ('192.168.0.198(1414)')
xmitq (QAQB) trptype (tcp)7)end //退出MQSC命令环境
8)runmqlsr –t TCP –m QMA //启动监听器
9)runmqchl –c A.TO.B –m QMA //启动通道
//注意:启动此步之前,需要保证QMB上的通道定义完成并且侦听器在QMB上已经启动
- 17. 在接收方B:( 假设为: 192.168.0.198:1414 / 127.0.0.1:1414)
1) 建立队列管理器QMB: crtmqm QMB
2) strmqm QMB
3) runmqsc QMB
4) 定义死信队列
ALTER QMGR DEADQ(QMB.DEADQ)
DEFINE QL(QMB.DEADQ)
5) 定义本地队列LQB: define qlocal (LQB) DEFPSIST(YES)
6) 创建接收通道: define channel (A.TO.B) chltype (RCVR) trptype (tcp)
7)end //退出MQSC命令环境
- 18. —————— 测试验证 ——————
AMQSPUT QR.TOB QMA
//在QMA队列管理器的QR.TOB远程定义中输入一些消息数据
AMQSGET LQB QMB
//在QMB队列管理器的LQB本地消息队列中读取通过管道A.TO.B传递过来的数据
- 19. 4.2 MQ的通信模式1. 点对点通信:支持一对一、一对多、多对多、多对一等配置2. 多点广播:能够将消息发送到多个目标站点(Destination List)3. 发布/订阅:在Broker订阅Topic,有发布相同Topic的话就接收。4. 群集:简化点对点通信模式中的系统配置。群集中队列管理器之间
能够进行负载均衡。
- 20. 4.3 MQ的APIMQ支持多种语言:C++、Java、C#、VB等WebSphere MQ Java API
- 21. 其它比较流行的JMS(Java Message Service)商业软件和开源产品WebLogic
是BEA公司实现的基于工业标准的J2EE应用服务器,
支持大多数企业级JavaAPI,它完全兼容JMS规范,支持点到点和发布/订阅消息模式,
它具有以下一些特点:
1) 通过使用管理控制台设置JMS配置信息;
2) 支持消息的多点广播;
3) 支持持久消息存储的文件和数据库;
4) 支持XML消息,动态创建持久队列和主题。
- 22. 2. SonicMQ是Progress公司实现的JMS产品。除了提供基本的消息驱动服务之外,
SonicMQ也提供了很多额外的企业级应用开发工具包,
它具有以下一些基本特征:
1) 提供JMS规范的完全实现,支持点到点消息模式和发布/订阅消息模式;
2) 支持层次安全管理;
3) 确保消息在Internet上的持久发送;
4) 动态路由构架(DRA)使企业能够通过单个消息服务器动态的交换消息;
5) 支持消息服务器的集群。
- 23. 3. Active MQ是一个基于Apache 2.0 licenced发布,开放源码的JMS产品。
其特点为:
1) 提供点到点消息模式和发布/订阅消息模式;
2) 支持JBoss、Geronimo等开源应用服务器,支持Spring框架的消息驱动;
3) 新增了一个P2P传输层,可以用于创建可靠的P2P JMS网络连接;
4) 拥有消息持久化、事务、集群支持等JMS基础设施服务。
- 24. 4. OpenJMS是一个开源的JMS规范的实现,
它包含以下几个特征:
1) 它支持点到点模型和发布/订阅模型;
2) 支持同步与异步消息发送;
3) 可视化管理界面,支持Applet;
4) 能够与Jakarta Tomcat这样的Servlet容器结合;
5) 支持RMI、TCP、HTTP与SSL协议。