IBM WebSphere MQ 2042错误

时间:2012-12-20 04:44:48

标签: java ibm-mq

我有以下代码:

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连接时会发生这种情况。请注意,队列属性设置为共享输入。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

虽然队列可能设置为DEFSOPT(SHARED),但这只是默认值。它不会阻止程序以独占方式打开它。特别是,无论队列的默认设置如何,MQ系统组件使用的非集群通道,命令队列和其他队列的传输队列都是独占打开的。同样,监控程序通常会打开专用队列,以确保其他程序不会竞争消息并导致错过重要事件。

是事件之一还是XMit队列?如果是这样,您可能无法在不停止通道或监视代理程序的情况下删除错误。如果它是用户定义的队列,请使用DISPLAY QSTATUS命令查看哪个进程打开了独占输入,然后断开该进程。

以下是一个例子:

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,即命令服务器),open类型,进程ID和线程ID。请注意,此处显示INPUT(EXCL)表示没有其他任何内容可以打开命令队列来浏览或获取消息。