WebSphere MQ基础概念

WebSphere MQ基础概念

1.简介

MQ是IBM开发的一款功能强大的消息中间件,通过通用的消息队列模型实现不同应用和系统之间的可靠数据通信,简化系统开发和集成,实现类似SOA的可重用架构。
IBM MQ提供消息封装和消息排队机制,支持以下四种应用场景。

  • 点对点方式:Point-to-point:应用发送消息到指定的队列和从指定队列接收消息,应用需要知道对方的名字
  • 发布/订阅:应用(发布者)发布消息到特定的话题(topic),MQ负责推送给所有订阅该话题的应用(订阅者)
  • 文件传输:MQ通过消息传送文件,并管理文件传输过程
  • 遥测传输:MQTT(Telemetry Transport),轻量级消息传输协议,支撑各种移动网络设备、物联网设备等消息传递需求

2.主要特点

消息:程序将数据封装成消息进行通信,而不是直接调用对方发送
队列:消息被放入队列中,允许应用独立去处理,不用维持应用之间的逻辑连接。

开发优势:快速开发、方便集成多种平台
- 应用服务器不必同时维持多个应用连接
- 应用无需自己写通信相关的代码、设计应用通信协议
- 可以选择消息处理顺序、安排多个消息处理程序进行负载均衡以及增加可用性

主要特征和好处:
- 取消应用程序之间的直接物理连接,应用程序通过MQ通信
- 时间独立,发送方无需等待接收方回复,发送程序和接收程序解耦
- 小程序,将应用程序分成小部分程序,每个程序完成工作的一部分
- 消息驱动处理,利用触发器,当有消息时自动启动应用进行处理
- 事件驱动处理,利用队里状态信息控制程序处理
- 消息优先级,指定消息优先级,决定消息在队列的位置
- 安全,支持认证、授权、加密等安全机制
- 数据完整性,支持事务特征
- 支持消息恢复,所有消息更新操作被日志记录

3.消息队列术语

消息:Message
封装消息的一种数据结构,主要由控制信息和应用数据构成,其中控制信息封装在消息描述符;

消息描述符:Message descriptor
MQMD(消息队列消息描述符):定义了消息的控制信息,主要由消息类型Type、消息标识符Identifier、消息优先级Priority组成

队列:Queue
按照一定顺序用来收集消息的结构,被指定名称表明消息发送的目的地

队列管理器:Queue Manager
提供队列服务的系统程序,应用程序通过它来管理队列和消息

通道:Channels
提供队列管理器之间通信的对象

消息通道代理:Message channel agent
一个通道由两个消息通道代理组成,一个负责发送,一个负责接收

集群:Cluster
多个消息队列管理器按照某种方式逻辑关联在一起,使用集群为了减少管理负担、增强可用性和负载均衡

MQ MQI client
MQ独立安装组件,允许应用通过MQ client与消息队列服务器通信交互

Point-to-point messaging
点对点消息模型,一个应用生产消息放入队列中,另一个应用从队列中取出处理(消费);

Publish/subscribe messaging
发布/订阅模型,一个应用(被称为发布者)生产消息,该消息每个拷贝被发送给每个感兴趣的应用(订阅者)

Topic
话题,一个特定的字符串用于表示信息的主题,发布者给每个消息指明特定的topic,消息队列管理器负责匹配该topic字段,发送匹配的消息给订阅者

Subscription
应用可以注册订阅特定topic的消息,Subscription(订阅)定义了如何匹配特定的消息,它包含了订阅者(应用)的标识、目标队列的标识(也就是存放发布消息的队列),也包含了一个消息发布如何存放目标队列的信息

4.消息和队列组件

消息Message和队列Queue是任何消息队列系统的两大基本组件。

消息
IBM MQ消息由如下三个部分构成:
- 应用数据(Application data):内容和结构由应用程序定义
- 消息描述符(Message descriptor):定义了控制信息,例如消息类型、优先级等,格式由IBM MQ定义(MQMD)
- 消息属性(Message properties):消息的元数据信息,内容由应用定义

消息长度:MQ本身默认最大长度是4MB,理论可以增加到100MB,这个长度仅仅是MQ本身的限制,实际还要受到应用的限制。

队列
用来存储消息的数据结构,每个队列属于特定的队列管理器,队列管理器负责维护队列,并将收到的消息存放到合适的队列里

队列创建:预定义的队列和动态队列
- Predefined queues:管理员使用命令创建(MQSC或PCF),该队列独立于应用,永久存在,即使MQ重启
- Dynamic queues:应用可以从模板队列创建新的队列,创建时可以设置属性,指明是永久的还是临时的

从队列获取消息方式:
- FIFO,先进先出
- 消息优先级,优先级相同时按照FIFO获取消息
- 程序获取指定的消息

5.MQ管理工具

  • 控制命令:命令行执行,可以创建、启动和停止队列管理器,运行管理和问题诊断程序
  • 脚本命令:MQ Script commands(MQSC),通过解释器runmqsc执行脚本文件,可以创建队列和主题、配置和管理MQ
  • 程序化命令:Programmable Command Format(PCF)Commands,实现脚本命令同样的功能,但其更容易在程序中使用
  • 在x86平台上,提供MQ Exporer GUI图形化管理工具

你可能感兴趣的:(MQ)