MQ以前没有接触过,但要面试的项目需要,网络上又有现成的代码,所以尝试了一下,过程如下。
PS:请多指教!
首先从网上下载了IBM Websphere MQ 的安装文件下来,地址:http://www.verycd.com/topics/127911/#theCon
打开Websphere MQ资源管理器,创建队列管理器:MQSI_SAMPLE_QM;
队列:q1
通道:BridgeChannel
创建JAVA类,关键代码如下:
public void mqTest() {
String mqManage = "MQSI_SAMPLE_QM";
String qName = "q1";
try{
//************************************************************************************
//对于客户端,首先设置队列管理器所在的主机(IP或主机名)
MQEnvironment.hostname="172.19.0.28";
//客户端连接的通道名字。它是个双向链接,使在客户端和队列管理器之间的MQI调用和回复成为可能
MQEnvironment.channel="BridgeChannel";
//消息编码(1381:GBK 1208:UTF)
MQEnvironment.CCSID=1381;
System.out.println("create a MQ manager:["+mqManage+"]");
//创建MQQueueManager实例(该模式适用捆绑模式和客户机连接模式)
MQQueueManager qMgr = new MQQueueManager(mqManage);
//************************************************************************************
//propertiesHashTable:环境设置对应的散列表
//MQQueueManager qMgr = new MQQueueManager(mqManage,propertiesHashTable);
//************************************************************************************
System.out.println("Accessing queue:"+qName);
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
MQQueue queue = qMgr.accessQueue(qName, openOptions);
//System.out.println("++++"+queue.getCurrentDepth());
//定义消息
MQMessage msg = new MQMessage();
MQPutMessageOptions pmo = new MQPutMessageOptions();
System.out.println("sending a message!!!");
MQMessage rcvMessage = new MQMessage();
for(int j=0;j<5;j++) {
String str = "dove$";
str = str + "*" + j;
//清空消息,如不清空,新的字符存不进去
msg.clearMessage();
msg.writeUTF(str);
System.out.println("&&^"+msg.getMessageLength());
queue.put(msg,pmo);
MQGetMessageOptions gmo = new MQGetMessageOptions();
System.out.println("...getting!");
queue.get(rcvMessage,gmo);
String msgText = rcvMessage.readUTF();
System.out.println("The Message Is:"+msgText);
}
System.out.println("close the queue");
queue.close();
System.out.println("disconnecting the queue manager");
qMgr.disconnect();
System.out.println("over");
}catch (MQException e){
System.out.println("MQException");
}catch(java.io.IOException ex){
System.out.println("IOException");
}
}
执行结果如下:
create a MQ manager:[MQSI_SAMPLE_QM]
Accessing queue:q1
sending a message!!!
&&^9
...getting!
The Message Is:dove$*0
&&^9
...getting!
The Message Is:dove$*1
&&^9
...getting!
The Message Is:dove$*2
&&^9
...getting!
The Message Is:dove$*3
&&^9
...getting!
The Message Is:dove$*4
close the queue
disconnecting the queue manager
over