C# 检测站点MQ管理器再次可用
我有一个C#应用程序,它从WebSphere队列(MQ 7.5版)读取消息,并将它们提交给另一个应用程序,我需要更新该应用程序以适应队列管理器停止或断开连接时的情况。我已更新队列管理器属性以添加“自动重新连接”选项,但我很难检测到队列管理器是否再次可用 我的应用程序等待消息出现在队列上最多3秒钟,然后,如果没有消息出现,则在循环并再次等待排队消息之前执行其他内务管理检查 我的队列管理器初始化现在包括以下语句C# 检测站点MQ管理器再次可用,c#,ibm-mq,C#,Ibm Mq,我有一个C#应用程序,它从WebSphere队列(MQ 7.5版)读取消息,并将它们提交给另一个应用程序,我需要更新该应用程序以适应队列管理器停止或断开连接时的情况。我已更新队列管理器属性以添加“自动重新连接”选项,但我很难检测到队列管理器是否再次可用 我的应用程序等待消息出现在队列上最多3秒钟,然后,如果没有消息出现,则在循环并再次等待排队消息之前执行其他内务管理检查 我的队列管理器初始化现在包括以下语句 QueueManagerProperties.Add(MQC.CONNECT_OPTIO
QueueManagerProperties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_RECONNECT);
我可以看到,当我停止MQ服务器上的队列管理器时,如果QueueManager属性IsConnectioned变为false。如果在断开队列管理器的连接时尝试从队列执行“Get”操作,则会从底层IBM MQ接口库中收到“Object not set to a instance”错误
但是,当我在MQ服务器上重新启动队列管理器时,我的应用程序中的IsConnected选项仍然为false,因此我无法检测再次尝试从队列读取消息的安全性。无论我做什么,我似乎都无法检测到队列管理器已重新连接,因此应用程序再也不会开始读取消息
任何关于我需要更新的建议都将不胜感激 如果使用了自动客户端重新连接功能,则
Get
调用将启动与队列管理器的重新连接。重新连接过程正在进行时,Get
将显示为挂起。如果调用返回异常,则为错误。你是最新的补丁包吗?此错误可能已在最新的修复包中修复。请确保您正在通过客户端通道定义表进行连接。
MQ.NET客户端将尝试重新连接到队列,默认时间为30分钟。若在30分钟内失败,那个么应用程序必须再次发出“连接”调用。那么,在应用程序发出“Get”调用多长时间之后?在我的测试环境中,我尝试在5分钟内重新连接。但是,我注意到,如果在断开队列管理器的连接时尝试“Get”命令,底层IBM库将崩溃,并出现“Object not set to a instance”错误。i、 e.当与MQ服务器的连接中断时,我似乎无法发出Get命令。