请参考以下代码片断(在IBM WebSphere MQ v5.3&v6 测试通过):
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.xml.sax.InputSource;
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
//----------------------------------------------
// ……
// MQ发送
try {
// 建立MQ客户端调用上下文环境
MQEnvironment.hostname = IoaConfig.getString( "mqHostName "); // 服务器ip地址
MQEnvironment.port = Integer.parseInt(IoaConfig.getString( "mqPort ")); // 服务器MQ服务端口
MQEnvironment.CCSID = Integer.parseInt(IoaConfig.getString( "mqCCSID ")); // 服务器MQ服务使用的编码
MQEnvironment.channel = IoaConfig.getString( "mqChannel "); // 服务器连接通道名
MQEnvironment.userID = IoaConfig.getString( "mqUserName "); // MQ服务用户名
MQEnvironment.password = IoaConfig.getString( "mqPassword ");
// 连接队列管理器
MQQueueManager qMgr = new MQQueueManager(IoaConfig.getString( "mqQManager "));
int openOptions = MQC.MQOO_OUTPUT
| MQC.MQOO_FAIL_IF_QUIESCING;
// 打开MQ队列
MQQueue q = qMgr.accessQueue(IoaConfig.getString( "mqLocalOutQueue "), openOptions);
FileInputStream fins = new FileInputStream(
strExtraSendXmlFileName);
byte[] data = new byte[fins.available()];
fins.read(data);
fins.close();
MQMessage msg = new MQMessage();
msg.write(data);
// 放入消息
q.put(msg);
// 关闭队列
q.close();
// 关闭队列管理器
qMgr.disconnect();
} catch (MQException e) {
Log.log(Log.ERROR, e.getMessage());
e.printStackTrace();
} catch (Exception e) {
Log.log(Log.ERROR, e.getMessage());
e.printStackTrace();
}
// MQ接收
try {
// 建立MQ客户端调用上下文环境
MQEnvironment.hostname = props.getProperty( "mqHostName "); // 服务器ip地址
MQEnvironment.port = Integer.parseInt(IoaConfig.getString( "mqPort ")); // 服务器MQ服务端口
MQEnvironment.CCSID = Integer.parseInt(IoaConfig.getString( "mqCCSID ")); // 服务器MQ服务使用的编码
MQEnvironment.channel = props.getProperty( "mqChannel "); // 服务器连接通道名
MQEnvironment.userID = props.getProperty( "mqUserName "); // MQ服务用户名
MQEnvironment.password = props.getProperty( "mqPassword ");
// 连接队列管理器
MQQueueManager qMgr = new MQQueueManager(props
.getProperty( "mqQManager "));
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
| MQC.MQOO_FAIL_IF_QUIESCING;
// 打开MQ队列
MQQueue q = qMgr.accessQueue(IoaConfig.getString( "mqLocalInQueue "), openOptions);
MQGetMessageOptions mgo = new MQGetMessageOptions();
mgo.options |= MQC.MQGMO_NO_WAIT;
MQMessage msg = new MQMessage();
if ((msg = fetchOneMsg(q)) != null) {
byte[] xmlData = new byte[msg.getDataLength()];
msg.readFully(xmlData);
// ……
}
// 关闭队列
q.close();
// 关闭队列管理器
qMgr.disconnect();
} catch (MQException e) {
Log.log(Log.ERROR, e.getMessage());
e.printStackTrace();
} catch (Exception e) {
Log.log(Log.ERROR, e.getMessage());
e.printStackTrace();
}
/**
* 从队列中取出一个消息
* @param q 队列名称
* @return
* @throws Exception
*/
private static MQMessage fetchOneMsg(MQQueue q) throws Exception {
MQGetMessageOptions mgo = new MQGetMessageOptions();
mgo.options |= MQC.MQGMO_NO_WAIT;
MQMessage msg = new MQMessage();
try {
// 获取消息
q.get(msg, mgo);
} catch (MQException e) {
return null;
}
return msg;
}