检测Webshere MQ Manager再次可用

时间:2016-03-21 16:45:01

标签: c# ibm-mq

我有一个C#应用程序从WebSphere队列(MQ V7.5)读取消息并将它们提交给另一个我需要更新的应用程序,以满足队列管理器停止或断开连接时的状况。我已更新了队列管理器属性以添加“自动重新连接”选项,但我正在努力检测队列管理器是否再次可用。

我的应用程序等待最多3秒钟才能在队列中显示消息,然后,如果没有消息出现,则会在循环并再次等待排队消息之前执行其他内务检查。

我的队列管理器初始化现在包含语句

QueueManagerProperties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_RECONNECT);

我可以看到,当我在MQ服务器上停止队列管理器时,如果QueueManager属性IsConnected变为false。如果我在队列管理器断开连接时尝试从队列执行“获取”操作,则会从基础IBM MQ接口库中获得“未设置为实例的对象”错误。

但是,当我在MQ服务器上重新启动队列管理器时,我的应用程序中的IsConnected选项仍然是假的,因此我无法检测何时再次尝试从队列中读取消息是安全的。无论我做什么,我似乎无法检测到队列管理器已重新连接,因此应用程序永远不会再次开始读取消息。

我非常感谢任何有关我需要更新的建议。

1 个答案:

答案 0 :(得分:0)

如果使用自动客户端重新连接功能,Get调用将启动重新连接到队列管理器。在重新连接过程正在进行时,Get似乎会挂起。如果调用返回异常,则会出错。你最近修好了吗?最新修订包中可能已修复此错误。