消息中间件MQ

消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。用于保证异构应用之间的消息传递。应用程序通过MQ接口进行互连通信,可以不必关心网络上的通信细节,从而将更多的注意力集中于应用本身。

分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。

对象

消息 (Message)
队列 (Queue)
队列管理器 (QueueManager)
通道 (Channel)
监听器 (Listener)

关系:队列管理器是负责向应用程序提供消息服务的机构,我们可以把队列管理器比作是数据库,队列是其中的一张表,消息表中的一条记录。

1、消息(Message)

消息是 WebSphereMQ中最小的概念,本质上就是一条数据,它能被一个或多个应用程序所理解,是应用程序之间传递的信息载体。

消息可以大致分成两部分:应用数据体和消息数据头。消息数据头是对消息属性的描述,这段信息往往被队列管理器用来确定对消息的处理。消息数据头可以由应用程序或系统的消息服务程序共同产生,它包含了消息在传送中的必要信息,如目标队列管理器的名字,目标队列的名字,以及消息的其它一些属性。

消息可以分成持久(Persistent)消息和非持久 (Non-Persistent)消息。所谓“持久”的意思,就是在 WebSphere MQ 队列管理器重启动后,消息是否仍然能保持。 


2、队列 (Queue):分本地队列、远程队列、模型队列

本地队列按功能可分成 初始化队列,传输队列,目标队列和死信队列
初始化队列用做消息触发功能。
传输队列只是暂存待传的消息,条件许可的情况下,通过管道将消息传送其它的队列管理器。
目标队列是消息的目的地,可以长期存放消息。
如果消息不能送达目标队列,也不能再路由出去,则被自动放入死信队列保存。

远程队列
用来指定远端队列管理器中的队列。使用了远程队列定义,程序就不需要知道目标队列的位置。

模型队列
-定义了一套本地队列的属性集合,一旦打开模型队列,队列管理器会按这些属性动态地创建出一个本地队列。

3、队列管理器(QueueManager)

WebSphere MQ中的队列管理器可以含有很多个队列,但一个队列只能属于一个队列管理器。一个操作系统平台可以创建一个队列管理器,也可以创建多个队列管理器。队列管理器、队列、通道等等都是WebSphere MQ的对象,所有的对象都有各自的属性,有些属性必须在对象创建的时候指定,有些可以在创建以后更改。


4、通道 (Channel)

通道是 两个队列管理器之间的一种单向的点对点的通信连接 ,消息在通道中只能单向流动。如果需要双向交流,可以建立一对通道,一来一去。站在队列管理器的角度,这一对通道可以按消息的流向分成输入通道和输出通道。通过配置,对于放入本地传输队列中的消息,队列管理器会自动将其通过输出通道发出,送入对方的远程目标队列。
。 

5、监听器(Listener)

同步接收消息:同步读取即主动读取方式

异步接收消息异步读取则需要设定Listener,在消息到达后,自动调用ListeneronMessage()方法。


JMS开发

jmsJava消息服务(JavaMessage Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

JMS 中有一系列的类: ConnectionFactory Connection Session MessageProducer MessageConsumer Message
JMS 编程时,程序首先要找出 ConnectionFactory ,以此创建 Connection ,再建立 Session ,以后所有的操作都以 Session  为基础。找出 Queue  Queue  ( 统称 Destination) ,以此创建 QueueSender QueuePublisher ( 统称 MessageProducer ) ,在该对象上发送或发布消息。也可以在 Destination  基础上创建 QueueReceiver   或  QueueSubscriber ( 统称 MessageConsumer ) ,在该对象上接收或订阅消息。






  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值