2012-12-20 254 views
2

我有以下代碼:IBM WebSphere MQ的2042錯誤

int openOptions = MQC.MQOO_INQUIRE 
    + MQC.MQOO_FAIL_IF_QUIESCING 
    + MQC.MQOO_INPUT_SHARED; 

執行時,以下哪,我得到一個錯誤:

com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2042 MQJE001: Completion Code 2, Reason 2042

這發生在連接我與WebSphere MQ Java程序。請注意,隊列屬性被設置爲輸入共享。所有幫助讚賞。

回答

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是命令服務器),打開的類型,進程ID和線程ID。請注意,這裏顯示的是INPUT(EXCL),表示沒有別的東西可以打開命令隊列來瀏覽或獲取消息。

+0

那麼應該怎麼做,我該如何消除這個錯誤? – abhinav

+0

它是事件還是XMit隊列之一?如果是這樣,您可能無法在不停止通道或監控代理的情況下刪除錯誤。如果它是用戶定義的隊列,請使用['DISPLAY QSTATUS'](http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaj.doc/sc12260_。 htm)命令查看哪個進程打開了獨佔輸入,然後斷開該進程。 –

+0

親愛的搶劫,我正在嘗試,但無法得到命令,你能幫我嗎? – abhinav