2

次のコードがあります。

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 に接続しているときに発生します。キュー プロパティが入力共有として設定されていることに注意してください。すべての助けに感謝します。

4

1 に答える 1

3

キューは に設定できますがDEFSOPT(SHARED)、これはデフォルトにすぎません。プログラムが排他的に開くことを妨げるものではありません。特に、非クラスタ チャネルの伝送キュー、コマンド キュー、および MQ システム コンポーネントによって使用されるその他のキューは、キューのデフォルト設定に関係なく、排他的に開かれます。同様に、監視プログラムは、多くの場合、イベント キューを排他的に開き、他のプログラムがメッセージを競合して重大なイベントを見逃さないようにします。

イベントまたは XMit キューの 1 つですか? その場合、チャネルまたはモニター・エージェントを停止しないとエラーを除去できない可能性があります。ユーザー定義のキューの場合は、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)、メッセージの参照または取得のためにコマンド キューを開くことができるものは他にないことを示していることに注意してください。

于 2012-12-20T04:56:14.147 に答える