在
WebSphereMQ程序设计初探
一文中
讨论了从MQ队列管理器的本地队列中放置和读出消息的程序
本文主要通过两台机器
搭建MQ消息传输的环境
并编写测试程序进行测试
第一准备工作
准备台Win环境(XP也可)通过以太网连通
机器A代码为IP地址为
机器B代码为IP地址为
安装MQ
第二创建MQ对象
A机器上
打开WebSphereMQ资源管理器新建队列管理器名称为QM_其余采用默认设置;
在QM_队列管理器中创建本地队列名称为LQ_;
创建传输队列名称为XQ_(新建时选择本地队列将用法设置为传输);
创建远程队列定义名称为RQ_指定远程队列名称为LQ_远程队列管理器名称为QM_传输队列名称为XQ_;
创建发送方通道名称为传输协议为TCP/IP连接名称为()传输队列为XQ_;
创建接受方通道名称为采用默认设置
创建服务器连接通道名称为DCSVRCONN采用默认设置(该通道主要给后面的测试程序使用)
B机器和A机器上的操作一样只是命名不同如下
打开WebSphereMQ资源管理器新建队列管理器名称为QM_其余采用默认设置;
在QM_队列管理器中创建本地队列名称为LQ_;
创建传输队列名称为XQ_(新建时选择本地队列将用法设置为传输);
创建远程队列定义名称为RQ_指定远程队列名称为LQ_远程队列管理器名称为QM_传输队列名称为XQ_;
创建发送方通道名称为传输协议为TCP/IP连接名称为()传输队列为XQ_;
创建接受方通道名称为采用默认设置
创建服务器连接通道名称为DCSVRCONN采用默认设置
第三消息测试
在AB机器上分别启动其发送方通道正常情况通道状态应为正在运行
通过如下测试程序进行测试文件名为MQTestjava在机器A上进行运行(如在B上运行请读者自行适当修改)
importjavaioIOException;
importjavautilHashtable;
importcomibmmqMQException;
importcomibmmqMQMessage;
importcomibmmqMQPutMessageOptions;
importcomibmmqMQQueue;
importcomibmmqMQQueueManager;
publicclassMQSample{
//定义队列管理器和队列的名称
privatestaticStringqmName=QM_;
privatestaticStringqName=RQ_;
privatestaticMQQueueManagerqMgr;
privatestaticHashtableproperties=newHashtable();
publicstaticvoidmain(Stringargs[]){
try{
propertiesput(hostname);
propertiesput(portnewInteger());
propertiesput(channelDCSVRCONN);
propertiesput(CCSIDnewInteger());
propertiesput(transportMQSeries);
//Createaconnectiontothequeuemanager
qMgr=newMQQueueManager(qmNameproperties);
//Setuptheoptionsonthequeuewewishtoopen
intopenOptions=;
//Nowspecifythequeuethatwewishtoopen
//andtheopenoptions
MQQueueremoteQ=qMgraccessQueue(qNameopenOptions);
//DefineasimpleWebSphereMQmessageandwritesometextinUTFformat
MQMessageputMessage=newMQMessage();
putMessagewriteUTF(Test);
//specifythemessageoptions
MQPutMessageOptionspmo=newMQPutMessageOptions();
//acceptthedefaultssameasMQPMO_DEFAULT
//putthemessageonthequeue
remoteQput(putMessagepmo);
Systemoutprintln(MessagehasbeeninputintotheRemoteQueue);
//Closethequeue
remoteQclose();
//Disconnectfromthequeuemanager
qMgrdisconnect();
}catch(MQExceptionex){
//Ifanerrorhasoccurredintheabovetrytoidentifywhatwentwrong
//WasitaWebSphereMQerror?
Systemoutprintln(AWebSphereMQerroroccurred:Completioncode+pletionCode+
Reasoncode+exreasonCode);
}catch(IOExceptionex){
//WasitaJavabufferspaceerror?
Systemoutprintln(Anerroroccurredwhilstwritingtothemessagebuffer:+ex);
}catch(Exceptionex){
exprintStackTrace();
}
}
}
运行程序后请在B机器的本地队列LQ_中检查是否有消息存在如果有说明测试成功
读者可以自行编写把消息从对方的本地队列读取出来的程序
如果读者对以上的内容有任何疑问可以和我联系
版权所有严禁转载
参考资料
《WebSphereMQSystemAdministrationGuide》Thirdedition(May)SC
《WebSphereMQUsingJava》Thirdedition(January)SC
附件MQTestjava(K)