首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Websphere - get上有代码2042的错误

Websphere - get上有代码2042的错误
EN

Stack Overflow用户
提问于 2014-09-02 19:10:05
回答 1查看 1.7K关注 0票数 2

我们在一个带有原因代码2042的ImqQueue::get( ImqMsg &, ImqGetMessageOptions & );调用上得到了一个间歇性错误,这个错误不应该基于Websphere文档而发生™;我们应该只在打开的时候得到这个原因代码。

此错误是否表示服务器无法在其一侧打开队列,还是表示我们的客户端存在问题?处理此错误的最佳方法是什么?现在,我们只是记录它发生了,但它发生了很多。不幸的是,我对Websphere MQ不太熟悉;我在学习时会发现这一点,所以我没有所有的术语都是正确的。

我们的客户端是用C++链接libmq6.0.2.4编写的,运行在SLES-10上。除了运行7.1版本之外,我不知道服务器的详细信息。我们要求升级使我们的队伍更新。我们有多个客户机实例同时运行;所有实例都使用相同的请求队列,但每个实例都使用MQOO_INPUT_EXCLUSIVE + MQOO_INPUT_FAIL_IF_QUIESCING创建自己的动态应答队列。

EN

回答 1

Stack Overflow用户

发布于 2014-09-15 11:16:09

如果队列尚未打开,ImqQueue::get方法将隐式地为您打开队列。这将最终使用MQOO_INPUT_AS_Q_DEF选项,因此它将在队列中使用DEFSOPT(不包括共享的)属性。您还应该反复检查队列是否已定义为共享,而不是NOSHARE,但我怀疑已经正确设置了该队列。

您提到了应用程序的多个实例同时运行,因此如果其中一个实例以MQOO_INPUT_AS_Q_DEF身份隐式地打开队列,从而导致来自DEFSOPT的MQOO_INPUT_SHARED,则如果其他人打开队列,则将得到2042 (MQRC_OBJECT_IN_USE)。如果当时没有其他任何东西打开它,那么隐式打开就会工作,以后的实例将得到2042。

如果是断断续续的,那么我建议在您的应用程序中有一个路径,其中不调用ImqQueue::open方法。在查找时,将队列定义更改为DEFSOPT(SHARED)应该可以消除2042 s。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25630602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档