WEBSPHEREMQ实践

如有你有帮助,请购买下载,谢谢!

WEBSPHERE MQ实践

最近以来,工作中一直在使用WebSphere的 MQ产品,切实感觉到MQ作为消息中间件,在消息传递方面的强大功能,本文将详细描述MQ通讯的原理,并结合实例向大家展示MQ在java开发方面的一些技巧,由于很少在网上看到关于MQ比较复杂一点的通讯实例,抛砖引玉,希望对大家有所帮助。

简介

WebSphere MQ是一种面向对象的消息中间件,用于异构应用之间的消息传递,应用程序通过MQ接口进行通讯, WebSphere MQ支持多协议消息通讯,可以最大限度地简化网络编程,同时MQ支持多种平台,对消息支持交易式的提交和回滚,是一款非常不错的产品。 本文首先将介绍MQ的通讯的一些知识,然后结合java开发实例,着重描述MQ在两个队列管理器的同步通讯过程,其中包括MQ的安装、配置、相关java代码开发等。

MQ基础知识

MQ的通讯过程中一般会用到这么几个组建:队列管理器、队列、通道,接下来就本文会使用到的一些基础感念做简单介绍。

消息

消息就是MQ通讯的内容,是应用程序之间传递的信息载体,消息(按照WebSphere MQ队列管理器启动后,是否仍然保持)分为持久消息和非持久消息,一般把异步通讯配置为持久消息,同步通讯配置为非持久消息,本文有些地方也将消息称为报文。

队列

队列就是消息的寄存器,在通讯时,消息被添加到队列中后发送出去。队列分为本地队列、远程队列、别名队列等,本地队列是当前队列管理器中需要配置的,区别于本地队列,远程队列是指向远程队列管理器中的本地队列,本地队列又分为本地初始化队列、传输队列、目标队列、死进队列等,初始化队列作为消息触发,传输队列用来暂存待传输的消息,如果消息没有发送出去,最终会存放在死进队列中。本文中主要本地初始化队列、本地传输和远程队列。

1页

如有你有帮助,请购买下载,谢谢!

队列管理器

队列管理器也就是MQ的运行环境,维护和管理消息队列,向应用程序提供消息服务。应用程序连接到队列管理器的监听端口,访问队列管理器的队列,接收并发送消息,本文将建立2个队列管理器,模拟2个不同物理地址的MQ通讯,分别用来进行消息(报文)的发送端和接收端。

通道

通道是2个队列管理器之间的一种单向的点对点的通信连接。通道分为发送方通道、接收方通道、服务器连接通道等。消息通过发送方通道传递到目的队列管理器的接收方通道。发送方通道配置通道的时候需要选择通讯协议,本文将使用TCP协议。

MQ环境部署

实时发送队列 实时接收方通道 实时接收队列 实时发送队列 实时发送方通道 实时接收队列: 发送 实时传输队列 批量传输队列 实时传输队批量传输队列 接收 批量接收方通道 批量发送队列 批量发送方通道 批量接收队列 批量接收队列 队列 管理器A 队列 管理器B 批量发送队列

由上边的图我们可以看到,MQ的消息发送和接收过程大致如下(如图中红色和黑色的箭头,分别代表发送实时报文和异步报文的发送过程):消息发送时,队列管理器A中,消息通过实时发送队列进行发送,并在实时发送传输队列进行缓存,然后通过实时发送方通道连接到队列管理器B,再通过传输队列的缓存,然后被实时接收方队列截获并处理,在队列管理器B的消息被处理过后通过实时发送队列返回处理结果,再通过实时传输队列的缓存和实时接收方通道的传递,最终被队列管理器A的实时接收队列捕获。

我们接下来也将模拟整个实时报文传递的过程: 整个过程需要配置的MQ组建如下:

首先:建立2个队列管理器A和B,一个作为客户端,进行消息的发送;另一个作为服务器端,截获并处理消息,本例中将他们配置在同一台电脑上进行测试,在实际生产环境

2页

如有你有帮助,请购买下载,谢谢!

中,可以将分别建立在不同的主机上。

然后:需要分别在各个队列管理器上建立如上图所示的队列,包括发送队列、接受队列、传输队列。同时为了区分异步环境下的消息发送过程,还可以建立批量发送队列,批量接收队列、批量传递队列。

其次:需要建立发送和接收方通道。

另:由于本文是通过java来连接MQ,并进行消息发送的,故此还需要在各个队列管理器上建立java的监听端口,和服务器连接通道,这样java程序就可以通过MQ的监听器端口连接到MQ上。

这样的话,我们把需要配置的MQ组建可以归纳如下:

需要配置的队列管理器

名称 QM_TIPS_00_01 QM_TIPS_2600_01 描述 作为客户端,进行报文发送 作为服务器端,接收并处理报文 需要配置的队列

名称 PBC.0010.ONLINE.OUT PBC.2600.ONLINE.TRAN PBC.EXT.ONLINE.IN PBC.0010.BATCH.OUT PBC.2600.BATCH.TRAN PBC.EXT.BATCH.IN PBC.00.ONLINE.TRAN PBC.2600.ONLINE.OUT PBC.EXT.ONLINE.IN PBC.00.BATCH.TRAN PBC.2600.BATCH.OUT PBC.EXT.BATCH.IN 作用队列管理器 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_2600_01 QM_TIPS_2600_01 QM_TIPS_2600_01 QM_TIPS_2600_01 QM_TIPS_2600_01 QM_TIPS_2600_01 类型 本地 本地 远程 本地 本地 远程 本地 本地 远程 本地 本地 远程 描述 实时消息接收队列 实时消息传输队列 实时消息发送队列 异步消息接收队列 异步消息传输队列 异步消息发送队列 实时消息传输队列 实时消息接收队列 实时消息发送队列 异步消息传输队列 异步消息接收队列 异步消息发送队列 需要配置的通道

名称 0010.2600.O1 0010.2600.B1 2600.0010.O1 作用队列管理器 QM_TIPS_00_01 QM_TIPS_00_01 QM_TIPS_00_01 3页

类型 发送方 发送方 接收方 描述 实时消息发送通道 异步消息发送通道 实时消息接收通道

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4