【发布时间】:2016-07-05 01:38:50
【问题描述】:
这类似于How to find out if JMS Connection is there?
在JMS 中很容易发现连接是否丢失,异常侦听器会发生异常。但是如何确定连接是否正常?
场景:我使用JMS 与我的服务器通信,我想监控我的连接的健康状况。我为此运行了一项定期工作。
JMS 是否有办法检查连接是否正常?
例如。像
connection.isConnected()
【问题讨论】:
这类似于How to find out if JMS Connection is there?
在JMS 中很容易发现连接是否丢失,异常侦听器会发生异常。但是如何确定连接是否正常?
场景:我使用JMS 与我的服务器通信,我想监控我的连接的健康状况。我为此运行了一项定期工作。
JMS 是否有办法检查连接是否正常?
例如。像
connection.isConnected()
【问题讨论】:
您可以尝试使用 TransportListener (http://activemq.apache.org/maven/apidocs/org/apache/activemq/transport/TransportListener.html)。
您还可以在 ActiveMQConnection 类上使用一些方法:isClosed()、isClosing()、isStarted()、...
顺便说一句,检查连接状态是 jms 客户端的工作,而不是应用程序的工作。如果这是出于监控目的,您应该使用 JMX 甚至建议消息。
【讨论】:
因为与 JMS 提供程序的连接可能会在任何时候中断,例如当应用程序进行发送或接收调用时。因此,不能保证 isConnected() 类型的调用将连接可用性。相反,我会选择自己调用 API 并处理抛出的任何异常。如果是连接断开异常,请重新连接或使用 MQ JMS 客户端本身提供的自动重新连接选项。
【讨论】: