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”(comp 代码:2,原因代码:2017)。

我没有在上面的代码中关闭队列/管理器吗?请分享您的想法,以便处理所有消息。我通过 MQ.net 类使用 7.5 MQ 客户端。日志文件包含以下信息。

AMQ9051:WebSphere MQ 找不到安全策略定义。Compcode 2:原因 2017 解释:未定义安全策略定义。操作:必须在此操作之前定义安全策略定义。

4

1 回答 1

0

我尝试了您的示例代码片段,对我来说效果很好。我没有看到 2017 年的错误。

错误日志中的条目可能与您的问题有关。您是否为队列设置了安全策略并期望将签名/签名和加密的消息放入/获取/从队列中?与 IBM 开票/PMR 可能是值得的。

于 2013-04-12T13:29:37.747 回答