3

我目前正在使用 C#,我需要检查我建立的 JMS 连接的状态(它是否已连接/已断开连接)。我确信我可以成功连接和断开连接..只是我需要在我的 UI 中显示连接的状态。

JMS 连接是否有任何属性可以说明连接状态?或者有没有其他方法可以用来检查连接状态?

谢谢你的帮助。:)


目前,我正在使用 ExceptionListener 来侦听任何异常,并且在捕获任何异常时将标志设置为 false。当我连接时,我会将标志设置为真,反之,当我断开连接时,我会将标志设置为假。

我的 UI 将使用此标志来检测连接是否正常。

但是我在想,如果 IBM 连接有任何属性/方法可以用来显示连接的状态,那么它是一个更好的解决方案。对于 SonicMQ,有 .getConnectedState() 显示连接是活动的还是非活动的。我想知道 IBM 是否有类似于 SonicMQ 的东西?

4

1 回答 1

1

您可以使用Connection.setExceptionListener()方法异步通知在连接中检测到的异常。如果检测到问题,onException()则调用该方法。

请务必在工厂和目标上设置FAILIFQUIESCE属性,以便在管理员关闭 QMgr 时通知并有序关闭您的连接。

在 WMQ v7 中,可以在传输中启用会话重新连接。在这种情况下,应用程序可能不知道连接已中断,但您可以将其视为已连续连接。

请注意,在大多数情况下,异常是由应用程序的 API 调用驱动的。因此,如果连接丢失,您可能无法实时了解它,而是找出 API 调用的时间。如果应用程序长时间处于空闲状态并且您想要实时显示连接状态。有关该主题的更多信息,另请参阅“如何确定 JMS 连接是否存在? ”。

WMQ v7 具有自动重新连接客户端的选项。您必须在客户端和服务器上都使用 v7 才能正常工作。由于 v6 已于 2011 年 9 月终止,因此最好在 v7 上开发此应用程序。您可以将 v7 客户端下载为SupportPac MQC7启用JMS 客户端重新连接后,应用程序可能不知道连接活动,除非在重新构建连接时响应 API 调用的延迟。该延迟的长度取决于管理员和连接工厂中设置的频道调谐。

于 2010-07-26T12:02:29.190 回答