mq的java测试类报错2539,百度无果

康贝勒 2017-03-14 03:02:13
这个是发送的队列






这个是接收的



可以接收到消息


这是我的测试类:

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);
}
}

/**
* 发送消息
* @param qByte
*/
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)

百度找了很多没找到问题,请问这儿有没有能够解决问题的,麻烦您了,谢谢
...全文
2407 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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