IBM MQ遇到的问题,大神帮个忙

康贝勒 2017-03-14 02:43:01
这是队列管理器




这是接收的队列



现在我发送测试消息,可以成功接收


但是我用JAVA类测试,总会报2539的错

下面是我的类:

package main;

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.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

/*
* 可以在MQ的资源管理器的某一个队列上放入测试消息、浏览消息等
* 可以放入多条消息,按先进先出的方式取得
*/
public class MQTest {

private String qManager;// QueueManager名
private MQQueueManager qMgr;
private MQQueue qQueue;
String HOST_NAME;
int PORT = 0;
String Q_NAME;
String CHANNEL;
int CCSID;
String Msg;

public void init() {

try {
HOST_NAME = "10.10.10.223";// Hostname或IP
PORT = 1414;// 要有一个侦听器,处于活动状态,且监听1414端口
qManager = "QM_APPLE";
Q_NAME = "Q1";// Q1是一个本地队列
CHANNEL = "QM_ORANGE.QM_APPLE";// 连接通道
CCSID = 1381; // 表示是简体中文,
MQEnvironment.hostname = HOST_NAME; // 安裝MQ所在的ip address
MQEnvironment.port = PORT; // TCP/IP port
MQEnvironment.channel = CHANNEL;
MQEnvironment.CCSID = CCSID;

qMgr = new MQQueueManager(qManager);
int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT;
qQueue = qMgr.accessQueue(Q_NAME, qOptioin);

} catch (MQException e) {
System.out.println("A WebSphere MQ error occurred : Completion code " + e.completionCode
+ " Reason Code is " + e.reasonCode);
}
}

void finalizer() {
try {
qQueue.close();
qMgr.disconnect();
} catch (MQException e) {
System.out.println("A WebSphere MQ error occurred : Completion code " + e.completionCode
+ " Reason Code is " + e.reasonCode);
}
}

/*
* 取过一次,下次就没有了
*/
public void GetMsg() {
try {
MQMessage retrievedMessage = new MQMessage();

MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options += MQC.MQPMO_SYNCPOINT;

qQueue.get(retrievedMessage, gmo);

int length = retrievedMessage.getDataLength();

byte[] msg = new byte[length];

retrievedMessage.readFully(msg);
String sMsg = new String(msg);
System.out.println(sMsg);

} catch (RuntimeException e) {
e.printStackTrace();
} catch (MQException e) {
if (e.reasonCode != 2033) // 没有消息
{
e.printStackTrace();
System.out.println("A WebSphere MQ error occurred : Completion code " + e.completionCode
+ " Reason Code is " + e.reasonCode);
}
} catch (java.io.IOException e) {
System.out.println("An error occurred whilst to the message buffer " + e);
}
}

public void SendMsg(byte[] qByte) {
try {
MQMessage qMsg = new MQMessage();
qMsg.write(qByte);
MQPutMessageOptions pmo = new MQPutMessageOptions();
qQueue.put(qMsg, pmo);

System.out.println("The message is sent!");
System.out.println("\tThe message is " + new String(qByte, "GBK"));
} catch (MQException e) {
System.out.println("A WebSphere MQ error occurred : Completion code " + e.completionCode
+ " Reason Code is " + e.reasonCode);
} catch (java.io.IOException e) {
System.out.println("An error occurred whilst to the message buffer " + e);
}
}

/**
* @param args
*/
public static void main(String[] args) {

MQTest mqst = new MQTest();
mqst.init();
try {
mqst.SendMsg("你好,我是一条测试消息!".getBytes("GBK"));
mqst.GetMsg();
} catch (Exception e) {
e.printStackTrace();
}
mqst.finalizer();
}

}


以下是报错内容:
MQJE001: 完成代码为 '2',原因为 '2539'。
A WebSphere MQ error occurred : Completion code 2 Reason Code is 2539
java.lang.NullPointerException
at main.MQTest.SendMsg(MQTest.java:101)
at main.MQTest.main(MQTest.java:121)
Exception in thread "main" java.lang.NullPointerException
at main.MQTest.finalizer(MQTest.java:54)
at main.MQTest.main(MQTest.java:126)

请问怎么解决,找了很多论坛,都没有解决我的问题,帮个忙,谢谢
...全文
259 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧