WebSphere MQ传输环境搭建和测试 联系客服

发布时间 : 星期六 文章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(;