我遇到与帖子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连接和断开连接也没有发生: - (
任何猜测?
答案 0 :(得分:0)
在调用Disconnect后尝试使管理器对象无效。像
这样的东西manager.Disconnect();
manager = null;
答案 1 :(得分:0)
我在这个bug中与IBM合作了一段时间,但没有找到解决方案。每个人都同意存在问题,但他们的建议是首先将所有内容升级到较新版本的Websphere MQ,在我的场景中由于内部基础架构流程需要花费很长时间。我无法确认升级是否解决了问题。
我的建议,尽管非常糟糕,但对我来说这是最好的答案。使您的流程创建一个新流程,该流程执行与队列有关的任何操作,并使用任何形式的进程间通信来获取结果。定期或在与队列的每次互动中终止此过程。
会让您对自己的解决方案感到不满,但会为您节省大量的电子邮件流量和挫败感。