软件开发javamq 7.5

问一个关于 IBM WebSphere MQ的问题,消息错误代码为RC2019

我写了一个生产者程序,每隔5s往MQ发100条消息,又写了一个消费者程序,每隔10s从MQ中取消息,再写入文件,生产者MQ主要代码:MQQueue queue = null;int openOptions = MQConstants.MQOO_OUTPUT| MQConstants.MQOO_FAIL_IF_QUIESCING| MQConstants.MQGMO_WAIT;    if (qM...显示全部

我写了一个生产者程序,每隔5s往MQ发100条消息,又写了一个消费者程序,每隔10s从MQ中取消息,再写入文件,
生产者MQ主要代码:
MQQueue queue = null;
int openOptions = MQConstants.MQOO_OUTPUT
| MQConstants.MQOO_FAIL_IF_QUIESCING
| MQConstants.MQGMO_WAIT;

    if (qMgr == null || !qMgr.isConnected()) {        qMgr = new MQQueueManager(qmName);    }    try {        queue = qMgr.accessQueue(qName, openOptions);        MQMessage putMessage = new MQMessage();        // putMessage.messageId = msgID.getBytes();        // putMessage.writeUTF(message);        putMessage.write(message.getBytes("UTF-8"));        MQPutMessageOptions pmo = new MQPutMessageOptions();        queue.put(putMessage, pmo);        queue.close();    } catch (Exception e) {        e.printStackTrace(System.out);        throw e;    } finally {        try {            if (queue != null) {                try {                    queue.close();                } catch (MQException e) {                    e.printStackTrace();                }            }            if (qMgr != null) {                qMgr.disconnect();            }        } catch (MQException e) {            throw e;        }    }    消费者MQ主要代码:    String[] messages = null;    int count = 0;    try {        qMgr = new MQQueueManager(qmName);    } catch (MQException e) {        throw e;    }    // @SuppressWarnings("deprecation")    // int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT    // | MQC.MQOO_INQUIRE;    // int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF |    // MQConstants.MQOO_OUTPUT;    int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF            | MQConstants.MQOO_INQUIRE ;

// | MQConstants.MQOO_FAIL_IF_QUIESCING;

    MQQueue queue = null;    try {        queue = qMgr.accessQueue(qName, openOptions, null, null, null);        int depth = queue.getCurrentDepth();        messages = new String[depth];        // System.out.println("队列中的消息长度为:" + depth);        // 将队列中的消息读取出来        while (depth-- > 0) {            // System.out.println(depth);            MQMessage msg = new MQMessage();// 读取的队列消息            // msg.messageId = msgID.getBytes();            MQGetMessageOptions gmo = new MQGetMessageOptions();            queue.get(msg, gmo);            int len = msg.getDataLength();            byte[] buf = new byte[len];            msg.readFully(buf, 0, len);            String strmsgCont = new String(buf, "UTF-8");            messages[count++] = strmsgCont;        }    } catch (MQException e) {        e.printStackTrace();    } catch (Exception e) {        e.printStackTrace();    } finally {        if (queue != null) {            try {                queue.close();            } catch (MQException e) {                e.printStackTrace();            }        }        if (qMgr != null) {            qMgr.disconnect();        }    }    return messages;}

刚开始的几次,差不多20s内两边正常收发,之后就报了这个异常MQJE001: 完成代码为 '2',原因为 '2019'。
com.ibm.mq.MQException: MQJE001: 完成代码为 '2',原因为 '2019'。

看了IBM的官方文档解释,也是一头雾水,麻烦谁知道的告诉一下;

注:附IBM官方接释:
2019 (07E3) (RC2019): MQRC_HOBJ_ERROR
Explanation
The object handle Hobj is not valid, for one of the following reasons:
v The parameter pointer is not valid, or (for the MQOPEN call) points to
read-only storage. (It is not always possible to detect parameter pointers that are
not valid; if not detected, unpredictable results occur.)
v The value specified was not returned by a preceding MQOPEN call.
v The value specified has been made invalid by a preceding MQCLOSE call.
v The handle is a shared handle that has been made invalid by another thread
issuing the MQCLOSE call.
v The handle is a nonshared handle that is being used by a thread that did not
create the handle.
v The call is MQGET or MQPUT, but the object represented by the handle is not a
queue.

收起
参与29

查看其它 25 个回答liushaoyi的回答

liushaoyiliushaoyi技术经理华润
把服务器连接通道的mcauser属性设置为MQ的管理员用户
互联网服务 · 2015-05-19
浏览4632

回答者

liushaoyi
技术经理华润

liushaoyi 最近回答过的问题

回答状态

  • 发布时间:2015-05-19
  • 关注会员:3 人
  • 回答浏览:4632
  • X社区推广