当我在导入队列中有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 EXPLANATION:安全策略定义 没有定义。操作:必须定义安全策略定义 在此行动之前。
答案 0 :(得分:0)
我尝试了您的示例代码段,对我来说效果很好。我没有看到2017年的错误。
错误日志中的条目可能与您的问题有关。您是否为队列设置了安全策略并期望将签名/签名和加密的消息放入/接收队列?与IBM合作开票/ PMR可能是值得的。