软件开发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 (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

26同行回答

liushaoyiliushaoyi技术经理华润
把服务器连接通道的mcauser属性设置为MQ的管理员用户显示全部
把服务器连接通道的mcauser属性设置为MQ的管理员用户收起
互联网服务 · 2015-05-19
浏览4593
miracle_yaomiracle_yao软件开发工程师广东工业大学
@liushaoyi 能不能再问个问题,因为我的MQ是安装在本机(hostname = 127.0.0.1),当我把MQ搬到虚拟机下进行通信时,发现创建不了连接,报2035(虚拟机和本机能互ping),我用了alter qmgr chlauth(disabled)去掉权限鉴定还是不行,希望可以指导下。...显示全部
@liushaoyi 能不能再问个问题,因为我的MQ是安装在本机(hostname = 127.0.0.1),当我把MQ搬到虚拟机下进行通信时,发现创建不了连接,报2035(虚拟机和本机能互ping),我用了alter qmgr chlauth(disabled)去掉权限鉴定还是不行,希望可以指导下。收起
软件开发 · 2015-05-18
浏览4594
miracle_yaomiracle_yao软件开发工程师广东工业大学
非常感谢liushaoyi,改了通道配置可以了,测的时间为我吃饭的时间(大概15分钟),发送线程为10s发1000条,接收线程为10s接收一次。显示全部
非常感谢liushaoyi,改了通道配置可以了,测的时间为我吃饭的时间(大概15分钟),发送线程为10s发1000条,接收线程为10s接收一次。收起
软件开发 · 2015-05-14
浏览4549
liushaoyiliushaoyi技术经理华润
AMQ9513: 已达到最大通道数。并发数较大,可以调整MQ配置,修改$MQ_PATH/qmgrs/队列管理器名/qm.ini,然后重启队列管理器参考:Channels:   MaxChannels=3000   MaxActiveChannels=3000显示全部
AMQ9513: 已达到最大通道数。

并发数较大,可以调整MQ配置,修改$MQ_PATH/qmgrs/队列管理器名/qm.ini,然后重启队列管理器
参考:
Channels:
   MaxChannels=3000
   MaxActiveChannels=3000收起
互联网服务 · 2015-05-14
浏览4549
miracle_yaomiracle_yao软件开发工程师广东工业大学
2015/5/13 16:51:55 - Process(3532.3) User(MUSR_MQADMIN) Program(amqzmur0.exe)                      Host(YAO-PC) Installation(Installation1)         &n...显示全部
2015/5/13 16:51:55 - Process(3532.3) User(MUSR_MQADMIN) Program(amqzmur0.exe)
                      Host(YAO-PC) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM_YAO_PC)
                     
AMQ6287: WebSphere MQ VC:\Program Files (x86)\IBM\WebSphere MQ (Installation1)


说明:
WebSphere MQ 系统信息:
产品           :- Windows 7 Ultimate x64 Edition, Build 7600 (MQ Windows
32-bit)
版本           :- C:\Program Files (x86)\IBM\WebSphere MQ (Installation1)
主机信息       :- 7.5.0.2 (p750-002-130627)
操作:
无。
-------------------------------------------------------------------------------
2015/5/13 16:51:55 - Process(4416.437) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(YAO-PC) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM_YAO_PC)
                     
AMQ9999: 通道“S_YAO_PC”至主机“YAO-PC (192.168.1.103)”已异常结束。

说明:
针对通道“S_YAO_PC”采用进程标识“4416(13020)”运行的通道程序异常结束。主机名为
“YAO-PC (192.168.1.103)”;在某些情况下,主机名无法确定,因此显示为“????”.
操作:
请查看错误日志中有关该通道程序的先前错误消息,以确定故障原因。请注意,可以通过
调整 qm.ini 中“QMErrorLog”节下的“ExcludeMessage”或“SuppressMessage”属性,
完全排除或禁止此消息。要了解进一步的信息,请参阅《系统管理》指南。
----- amqrmrsa.c : 898 --------------------------------------------------------
2015/5/13 16:51:55 - Process(4416.438) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(YAO-PC) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM_YAO_PC)
                     
AMQ9513: 已达到最大通道数。

说明:
已达到可同时使用的最大通道数。允许通道数是队列管理器配置文件中的一个可配置的参
数。
操作:
等待一些正在工作的通道关闭。当有某些通道可用时再试该操作。
----- amqrcsia.c : 1231 -------------------------------------------------------
2015/5/13 16:51:55 - Process(4416.438) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(YAO-PC) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM_YAO_PC)
                     
AMQ9999: 通道“S_YAO_PC”至主机“YAO-PC (192.168.1.103)”已异常结束。

说明:
针对通道“S_YAO_PC”采用进程标识“4416(14160)”运行的通道程序异常结束。主机名为
“YAO-PC (192.168.1.103)”;在某些情况下,主机名无法确定,因此显示为“????”.
操作:
请查看错误日志中有关该通道程序的先前错误消息,以确定故障原因。请注意,可以通过
调整 qm.ini 中“QMErrorLog”节下的“ExcludeMessage”或“SuppressMessage”属性,
完全排除或禁止此消息。要了解进一步的信息,请参阅《系统管理》指南。
----- amqrmrsa.c : 898 --------------------------------------------------------
2015/5/13 16:51:55 - Process(4416.439) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(YAO-PC) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM_YAO_PC)
                     
AMQ9513: 已达到最大通道数。

说明:
已达到可同时使用的最大通道数。允许通道数是队列管理器配置文件中的一个可配置的参
数。
操作:
等待一些正在工作的通道关闭。当有某些通道可用时再试该操作。收起
软件开发 · 2015-05-14
浏览4965
liushaoyiliushaoyi技术经理华润
那还是贴一下错误日志吧。$MQ_PATH/qmgrs/队列管理器名/errors/AMQERR01.LOG显示全部
那还是贴一下错误日志吧。
$MQ_PATH/qmgrs/队列管理器名/errors/AMQERR01.LOG收起
互联网服务 · 2015-05-14
浏览4505
miracle_yaomiracle_yao软件开发工程师广东工业大学
我新建的通道是服务器连接通道,其他的参数都是默认的显示全部
我新建的通道是服务器连接通道,其他的参数都是默认的收起
软件开发 · 2015-05-14
浏览4157
liushaoyiliushaoyi技术经理华润
把这个通道的定义贴出来看看,有可能超时自动断开连接了显示全部
把这个通道的定义贴出来看看,有可能超时自动断开连接了收起
互联网服务 · 2015-05-13
浏览4110
miracle_yaomiracle_yao软件开发工程师广东工业大学
我把生成QueueManager做成一个单例,顺便加了锁,但是发送/接收一段时间(几十s吧),之后就报2537,连接通道被拒绝,这个问题在我之前做的过程也出现过,但是为什么会通道拒绝呢显示全部
我把生成QueueManager做成一个单例,顺便加了锁,但是发送/接收一段时间(几十s吧),之后就报2537,连接通道被拒绝,这个问题在我之前做的过程也出现过,但是为什么会通道拒绝呢收起
软件开发 · 2015-05-13
浏览4151
miracle_yaomiracle_yao软件开发工程师广东工业大学
好的,非常感谢。显示全部
好的,非常感谢。收起
软件开发 · 2015-05-13
浏览4138

提问者

miracle_yao
软件开发工程师广东工业大学

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-05-12
  • 关注会员:3 人
  • 问题浏览:23776
  • 最近回答:2015-05-19
  • X社区推广