void getConnectInfo() throws MQException {
if(qMgr==null){
getInfo();
MQEnvironment.hostname = hostname;//主机IP
MQEnvironment.channel = channel;//连接通道名字
MQEnvironment.port = port; //监听端口
MQEnvironment.CCSID = CCSID; //传输的编码类型
qMgr = new MQQueueManager(QueueManager); //队列管理器
}
}
获取java连接mq的信息
void receiveMsg() {
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE;
MQQueue queue = null;
try {
queue = qMgr.accessQueue(queueString, openOptions, null, null, null);//queueString 为要读取远端队列的队列名称
int depth = queue.getCurrentDepth();
log.info("该队列当前的深度为:" + depth); //当前Mq队列消息的大小
while (depth-- > 0) {
MQMessage msg = new MQMessage();// 要读的队列的消息
MQGetMessageOptions gmo = new MQGetMessageOptions();
try{
queue.get(msg, gmo);
}catch(MQException e){
log.info("{}",e);
}
int dataLength = msg.getDataLength();
log.info("消息的大小为:{}" , dataLength);
String strXml = msg.readStringOfByteLength(dataLength);
log.info("消息的内容:{}" , strXml); //我在连接的时候出现了2033的异常,原因是远端队列有多个应用程序在读取消息,未读的队列消息被其他应用读取造成的。
//当前Mq队列消息的大小
while (depth-- > 0) {
MQMessage msg = new MQMessage();// 要读的队列的消息
MQGetMessageOptions gmo = new MQGetMessageOptions();
try{
queue.get(msg, gmo);
}catch(MQException e){
log.info("{}",e);
}
int dataLength = msg.getDataLength();
log.info("消息的大小为:{}" , dataLength);
String strXml = msg.readStringOfByteLength(dataLength);
log.info("消息的内容:{}" , strXml); //我在连接的时候出现了2033的异常,原因是远端队列有多个应用程序在读取消息,未读的队列消息被其他应用读取造成的。
}
} catch (Exception e) {
log.info("获取队列消息失败:{}" , e);
} finally {
if (queue != null) {
try {
queue.close();
} catch (MQException e) {
log.info("获取队列消息失败:{}" , e);
e.printStackTrace();
}
}
}
}