当活动和备用队列管理器重新启动时,IBM XMS 客户端未调用 ExceptionListerner
IBM XMS client didn't invoke ExceptionListerner when both active and standby Queue Managers restarted
我正在使用 XMS .NET 客户端 7.5 版连接到 WebSphere 的多实例队列管理器。
并异步接收消息并订阅异常侦听器以接收 WMQ 连接上发生的任何异常。
为了测试队列管理器故障转移场景,我们终止了现有连接并关闭活动队列管理器实例并启动备用实例。在此操作过程中,已连接的 XMS 客户端会调用附加的异常侦听器。 Exception Listener 方法里面的逻辑,重启连接。然后我们很好,我们再次开始接收队列上的消息。
然而,当多实例队列管理器中存在的所有 2 个实例(在我们的示例中为 2)一起重新启动时,我们没有看到异常侦听器方法被调用。因此,尽管队列中存在消息,但我们没有任何消息。
(后来我们关闭了客户端应用程序并再次启动,然后我们开始接收消息。)
有了这个我的问题是:
这是我描述的场景中例外发生的情况吗?
如果是,即使在这种情况下如何调用异常侦听器方法。我是否需要从 XMSC class 对连接工厂进行任何设置?
还有我的最后一个问题。特定的 .NET XMS 客户端和一般的 JMS 客户端如何知道连接仍然有效?
默认情况下,XMS .NET 将尝试重新连接 30 分钟。如果 30 分钟内没有建立连接,将抛出 MQRC_RECONNECT_FAILED
的异常,并且不会再尝试。请参阅 here。在这种情况下,应用程序需要再次发出连接调用。
关于您的问题 #3:最好拨打电话,例如发送或接收。如果没有到队列管理器的连接,则会抛出异常。应用程序处理该异常并再次发出连接调用。
我正在使用 XMS .NET 客户端 7.5 版连接到 WebSphere 的多实例队列管理器。
并异步接收消息并订阅异常侦听器以接收 WMQ 连接上发生的任何异常。
为了测试队列管理器故障转移场景,我们终止了现有连接并关闭活动队列管理器实例并启动备用实例。在此操作过程中,已连接的 XMS 客户端会调用附加的异常侦听器。 Exception Listener 方法里面的逻辑,重启连接。然后我们很好,我们再次开始接收队列上的消息。
然而,当多实例队列管理器中存在的所有 2 个实例(在我们的示例中为 2)一起重新启动时,我们没有看到异常侦听器方法被调用。因此,尽管队列中存在消息,但我们没有任何消息。
(后来我们关闭了客户端应用程序并再次启动,然后我们开始接收消息。)
有了这个我的问题是:
这是我描述的场景中例外发生的情况吗?
如果是,即使在这种情况下如何调用异常侦听器方法。我是否需要从 XMSC class 对连接工厂进行任何设置?
还有我的最后一个问题。特定的 .NET XMS 客户端和一般的 JMS 客户端如何知道连接仍然有效?
默认情况下,XMS .NET 将尝试重新连接 30 分钟。如果 30 分钟内没有建立连接,将抛出 MQRC_RECONNECT_FAILED
的异常,并且不会再尝试。请参阅 here。在这种情况下,应用程序需要再次发出连接调用。
关于您的问题 #3:最好拨打电话,例如发送或接收。如果没有到队列管理器的连接,则会抛出异常。应用程序处理该异常并再次发出连接调用。