2

インポート キューに 2000 件のメッセージがある場合、それを読み進めると、このようになります

MQQueue mqQueue = null; 
MQQueueManager mqQMgr=null;  
try
{
  //Create connection to queue manager
   mqQMgr = new MQQueueManager("Queue Manager name", properties);
  //Access the queue
    mqQueue = mqQMgr.AccessQueue(QueueName, MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE);
   for(int i=1;i<2000;i++)
  {
    //read the messages
    mqMsg=new MQMessage();
    mqQueue.Get(mqMsg);
  }
}
catch(MQException mqe)
{  
  //If no messages in the queue , break. (if not, catch any error)
}
finally
{
     mqQueue.Close(); //Close the MQ Queue
     mqQMgr.Disconnect(); //Disconnect the MQ Manager
}

マネージャーは、たとえば最初の 800 メッセージを読み取るたびにランダムに処理し、その後スローバックします

"MQRC_HANDLE_NOT_AVAILABLE" (コンプ コード:2、理由コード:2017)。

上記のコードでキュー/マネージャーを閉じていませんか? すべてのメッセージを処理できるように、あなたの考えを共有してください。MQ.net クラス経由で 7.5 MQ クライアントを使用しています。ログ ファイルには、以下の情報が含まれています。

AMQ9051: WebSphere MQ はセキュリティー・ポリシー定義を見つけることができませんでした。Compcode 2 : reason 2017 説明: セキュリティ ポリシー定義が定義されていません。アクション: このアクションの前に、セキュリティ ポリシー定義を定義する必要があります。

4

1 に答える 1

0

サンプル コード スニペットを試してみましたが、問題なく動作します。2017年のエラーは表示されません。

エラー ログのエントリは、問題に関連している可能性があります。キューのセキュリティ ポリシーを設定し、署名付き/署名済みおよび暗号化されたメッセージがキューに入れられたりキューから取得されたりすることを期待していますか? IBM でチケット/PMR を開く価値があるかもしれません。

于 2013-04-12T13:29:37.747 に答える