【问题标题】:IBM JMS connectionIBM JMS 连接
【发布时间】:2011-03-20 21:33:27
【问题描述】:

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

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

感谢您的帮助。 :)


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

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

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

【问题讨论】:

  • WMQ JMS 实现与 JMS 1.1 兼容,据我所知,它不包含任何特定于提供程序的方法,例如 getConnectionState()。
  • oic。然后我想我必须使用异常侦听器来检查是否有任何断开连接..谢谢 :)

标签: c# connection jms status ibm-mq


【解决方案1】:

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

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

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

请注意,在大多数情况下,异常是由应用程序的 API 调用驱动的。因此,如果连接丢失,您可能无法实时了解它,而是了解何时进行 API 调用。如果应用程序长时间处于空闲状态,并且您希望实时显示连接状态。有关该主题的更多信息,另请参阅“How to find out if JMS Connection is there?”。

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

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2019-12-31
    • 2015-04-08
    • 1970-01-01
    • 2022-08-19
    • 2021-08-04
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多