【发布时间】: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 文件夹下找到。