发布时间 : 星期六 文章WebSphere MQ传输环境搭建和测试更新完毕开始阅读c546e2cd32687e21af45b307e87101f69e31fbc2
WebSphere MQ传输环境搭建和测试
IBM公司的WebSphere MQ产品可以方便地实现分布式异构系统之间的消息传递。对于大型的分布式系统,使用MQ进行数据通信可以说是非常有效的,而且适用于异构环境(如NT和多种UNIX之间通信)。本文主要介绍:MQ核心组件简介、MQ环境的搭建以及通过编写简单的程序对MQ进行测试,希望能起到抛砖引玉的作用。 一、MQ核心组件简介
MQ的核心组件包括:队列管理器(QueueManager)、队列(Queue)、通道(Channel)、消息(Message)和集群(Cluster)。
队列管理器(QueueManager)提供队列服务,管理属于该队列管理器的队列和通道等所有MQ对象。
队列(Queue)是用于存储消息(Message)的数据结构,有四种类型:本地队列(LocalQueue)、远程队列(RemoteQueue)、别名队列(AliasQueue)和模型队列(ModelQueue),最常用到的是本地队列和远程队列。
通道(Channel)是提供了从一个队列管理器到其他队列管理器的数据传输路径。通道类型有若干种,其中常用的是发送方通道(SenderChannel)和接收方通道(ReceiverChannel)。
消息(Message)是应用程序之间传递的一系列字节数据,MQ传递的消息有两部分组成:消息描述符(MessageDescriptor)和应用数据(ApplicationData)。默认最大传递的消息大小是4MB,可以根据需要进行设置,最大可到100MB。
集群(Cluster)是分布式网络上的多个队列管理器的集合,本文不涉及集群的具体内容,有兴趣的读者可参考相关资料。 二、MQ环境的搭建
本文搭建的环境以Windows平台为例,搭建步骤如下: (一)、准备工作
准备2台Win2000环境(XP也可),通过以太网连通。 机器A:IP地址为:10.1.1.1
机器B:IP地址为:10.1.1.2
均安装MQ 5.3,如需进行第三部分的程序测试,需要安装JDK并设置相应的类路径。
(二)、创建MQ对象
A机器上:
1、打开“WebSphere MQ资源管理器”,新建队列管理器,名称为QM_AAA,其余采用默认设置;
2、在QM_AAA队列管理器中创建本地队列,名称为LQ_AAA;
3、创建传输队列,名称为XQ_BBB(新建时选择“本地队列”,将“用法”设置为“传输”);
4、创建远程队列定义,名称为RQ_BBB,指定远程队列名称为LQ_BBB,远程队列管理器名称为QM_BBB,传输队列名称为XQ_BBB;
5、创建发送方通道,名称为AAA.BBB,传输协议为TCP/IP,连接名称为10.1.1.2(1414,传输队列为XQ_BBB;
6、创建接受方通道,名称为BBB.AAA,采用默认设置;
7、创建服务器连接通道,名称为DC.SVRCONN,采用默认设置(该通道主要给后面的测试程序使用)。
B机器和A机器上的操作一样,只是命名不同,如下:
1、打开“WebSphere MQ资源管理器”,新建队列管理器,名称为QM_BBB,其余采用默认设置;
2、在QM_BBB队列管理器中创建本地队列,名称为LQ_BBB;
3、创建传输队列,名称为XQ_AAA(新建时选择“本地队列”,将“用法”设置为“传输”);
4、创建远程队列定义,名称为RQ_AAA,指定远程队列名称为LQ_AAA,远程队列管理器名称为QM_AAA,传输队列名称为XQ_AAA;
5、创建发送方通道,名称为BBB.AAA,传输协议为TCP/IP,连接名称为10.1.1.1(1414,传输队列为XQ_AAA;
6、创建接受方通道,名称为AAA.BBB,采用默认设置;
7、创建服务器连接通道,名称为DC.SVRCONN,采用默认设置。
在A、B机器上分别启动其发送方通道,如配置正确通道状态应为“正在运行”。
三、测试程序编写
测试程序采用JAVA语言编写,需要读者具备相关的JAVA编程知识以更好地理解本测试程序。程序文件名为MQSample.java,具体内容如下,在机器A上运行(如在B上运行请自行适当修改)。
-------------------------------------------------------------------------------------------
import java.io.IOException;
import java.util.Hashtable;
import com.ibm.mq.MQException;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
public class MQSample{
//定义队列管理器和队列的名称
private static String qmName = \
private static String qName = \
private static MQQueueManager qMgr;
private static Hashtable properties = new Hashtable(; public static void main(String args[] {
try {
properties.put(\
properties.put(\
properties.put(\
properties.put(\
properties.put(\
// Create a connection to the queue manager
qMgr = new MQQueueManager(qmName,properties;
// Set up the options on the queue we wish to open...
int openOptions = 16;
// Now specify the queue that we wish to open,
// and the open options...
MQQueue remoteQ = qMgr.accessQueue(qName, openOptions;
// Define a simple WebSphere MQ message, and write some text in UTF format..
MQMessage putMessage = new MQMessage(;
putMessage.writeUTF(\
// specify the message options...
MQPutMessageOptions pmo = new MQPutMessageOptions(;
// accept the defaults, same as MQPMO_DEFAULT
// put the message on the queue
remoteQ.put(putMessage,pmo;
System.out.println(\ // Close the queue...
remoteQ.close(;