IBM Websphere MQ C#app - 在MQRC_Q_MGR_NOT_AVAILABLE之后重新连接

时间:2014-01-08 13:37:53

标签: c# ibm-mq mq

我遇到与帖子Getting error reason code 2059 on MQ client (C#) when reconnecting to QueueManager after awhile相同的问题。

这是一个间歇性的问题。使用轮询连接和断开MQ的服务器应用程序有时会收到MQRC_Q_MGR_NOT_AVAILABLE。即使在每次轮询时创建新连接,应用程序也无法自动恢复。它是一个C#应用程序,使用标准的MQ .NET库。

重启服务后,它正常运行。通常问题每周发生一次。

对于每个轮询,使用以下命令创建新连接:

manager = new IBM.WMQ.MQQueueManager(config.QueueManagerName);

IBM.WMQ.MQQueueManager管理器实例存储在私有变量中,操作完成后,连接关闭,调用

 manager.Disconnect();
 manager.Close();

我错过了什么吗?

我试图模拟这个问题,即使经过100.000连接和断开连接也没有发生: - (

任何猜测?

2 个答案:

答案 0 :(得分:0)

在调用Disconnect后尝试使管理器对象无效。像

这样的东西
manager.Disconnect();
manager = null;

答案 1 :(得分:0)

我在这个bug中与IBM合作了一段时间,但没有找到解决方案。每个人都同意存在问题,但他们的建议是首先将所有内容升级到较新版本的Websphere MQ,在我的场景中由于内部基础架构流程需要花费很长时间。我无法确认升级是否解决了问题。

我的建议,尽管非常糟糕,但对我来说这是最好的答案。使您的流程创建一个新流程,该流程执行与队列有关的任何操作,并使用任何形式的进程间通信来获取结果。定期或在与队列的每次互动中终止此过程。

会让您对自己的解决方案感到不满,但会为您节省大量的电子邮件流量和挫败感。