我有以下代码:
int openOptions = MQC.MQOO_INQUIRE
+ MQC.MQOO_FAIL_IF_QUIESCING
+ MQC.MQOO_INPUT_SHARED;
执行时,我收到错误:
com.ibm.mq.MQException:MQJE001:完成代码 2,原因 2042
MQJE001:完成代码 2,原因 2042
在将我的 Java 程序与 WebSphere MQ 连接时会发生这种情况。请注意,队列属性设置为共享输入。感谢所有帮助。
尽管队列可以设置为DEFSOPT(SHARED)
,这只是默认值。它不会阻止程序以独占方式打开它。特别是,非集群通道的传输队列、命令队列和 MQ 系统组件使用的其他队列均以独占方式打开,无论队列的默认设置如何。同样,监视程序通常会打开事件队列以供独占使用,以确保其他程序不会竞争消息并导致错过关键事件。
它是事件队列还是 XMit 队列之一?如果是这样,您可能无法在不停止通道或监控代理的情况下消除错误。如果是用户自定义队列,则使用显示Q状态 http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaj.doc/sc12260_.htm命令查看哪个进程打开了独占输入,然后断开该进程。
这是一个例子:
C:\Users\T.Rob>runmqsc QM75
5724-H72 (C) Copyright IBM Corp. 1994, 2011. ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM75.
dis qs(system.admin.command.queue) all
1 : dis qs(system.admin.command.queue) type(handle) all
AMQ8450: Display queue status details.
QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE) TYPE(HANDLE)
APPLDESC(WebSphere MQ Command Server)
APPLTAG(here MQ 7.5\bin\amqpcsea.exe)
APPLTYPE(SYSTEM) BROWSE(NO)
CHANNEL( ) CONNAME( )
ASTATE(NONE) HSTATE(ACTIVE)
INPUT(EXCL) INQUIRE(YES)
OUTPUT(NO) PID(5220)
QMURID(0.0) SET(NO)
TID(1)
URID(XA_FORMATID[] XA_GTRID[] XA_BQUAL[])
URTYPE(QMGR)
该命令的输出将为附加到队列的每个进程重复。它显示可执行文件名称(在本例中amqpcsea
这是命令服务器)、打开类型、进程 ID 和线程 ID。注意这里显示的是INPUT(EXCL)
表明没有其他东西可以打开命令队列来浏览或获取消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)