【问题标题】:Doesn't continuously read messages from IBM MQ Queue不连续地从 IBM MQ Queue 读取消息
【发布时间】:2014-11-12 22:06:54
【问题描述】:

当我在导入队列中有 2000 条消息时,当我通过 get like this 阅读它时

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 解释:安全策略定义 没有定义。行动:必须定义安全策略定义 在此操作之前。

【问题讨论】:

  • 请在发生这种情况时发布 QMgr 的 AMQERR01.LOG 错误日志中的条目。另外,检查全局 AMQERR01.LOG 错误日志以查看是否有任何内容,或者是否有任何 FDC 文件被剪切。
  • T.Rob - 我在 QManager 中看到它,你知道位置/路径吗?
  • 您的 sn-p 未显示正在打开的队列。
  • Shashi - 我之前没有添加那行,但我实际上在我的代码片段中有它,现在已经编辑了上面的 sn-p。
  • AMQERRO1.LOG 可以在 MQ 安装文件夹下的“errors”文件夹下找到,每个队列管理器日志可以在 \qmgrs\\errors 文件夹下找到。

标签: c# .net ibm-mq


【解决方案1】:

我尝试了您的示例代码 sn-p 并且对我来说效果很好。我没有看到 2017 年的错误。

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

【讨论】:

  • 我从 ibm 站点下载了 7.5 MQ 客户端。我没有将任何加密消息放入/从队列中取出。奇怪的是,它处理了一些(例如 2000 条消息中的 800 条消息)然后停止处理。
猜你喜欢
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2021-08-02
相关资源
最近更新 更多