本文实例是基于 WebSphere MQ中将消息发送至远程队列的配置的基础上的,且如果要能正常运行并发送、接收消息,还需要在两个队列管理器(QM_ORANGE和QM_APPLE)上做如下配置或修改。
1.创建名称为DC.SVRCONN的服务器连接通道
2.将队列管理器的通道认证记录设置为“已禁用”
该程序实现了发送消息与读取消息的功能,见其中的send***与get***方法。这只适合于测试,因为环境中的程序还需要对此有稍微的更改,在真实的环境中肯定是在while(true){...}的无限循环中去调用其中的get方法,如果有值,那就执行对消息的处理操作,如果没有值就继续循环,在get方法中有等待的时间。
这个程序就其本身来说还是比较理解的:
1.首先设置一些相关的环境变量
2.再连接队列管理器
3.再次操作队列管理器中的指定队列
4.往指定队列中发消息或者是从指定对列中取消息
5.关闭队列
真实环境中的MQ,个人觉得至少都应该有两个本地队列加一个远程队列,因为消息的交互肯定是相互的,有收消息,肯定也有发消息。一个本地队列用于接收外部发过来的消息,用法为正常;另一个本地队例用于传输,用于做于远程队例的传输队列,将消息发送给远程主机的本地队列。要使消息能够成功的传送到远程队列,还需要配置通道,通道中需要指定远程通道的IP地址及端口、本地传输队例的名称、以及本地的通信地址,这样才能够往远程主机发送消息。
实例代码如下:
SendMessage.java
package com.bijian.study;
import java.io.IOException;
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
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 SendMessage {
//定义队列管理器和队列的名称
private static String qmName;
private static String qName;
private static MQQueueManager qMgr;
static{
//设置环境:
//MQEnvironment中包含控制MQQueueManager对象中的环境的构成的静态变量,MQEnvironment的值的设定会在MQQueueManager的构造函数加载的时候起作用,