我的 K8s pod 中的 ActiveMQ Artemis 2.32.0 由于某种原因不断崩溃。 崩溃并重新启动 Pod 后,我现有的客户端出现此异常:
org.apache.qpid.jms.exceptions.JmsConnectionFailedException: The JMS connection has failed: Transport connection remotely closed.`
org.apache.qpid.jms.provider.exceptions.ProviderFailedException: Transport connection remotely closed.
我正在使用此代码创建连接:
ConnectionFactory connectionFactory = new JmsConnectionFactory(activeMqAmpq);
Connection connection = connectionFactory.createConnection();
我没有看到任何方法来检查连接是否仍然处于活动状态或活动状态。我已经阅读过有关自动重新连接的内容,显然在崩溃后这是不可能的,因此我想知道连接是否仍然处于活动状态,如果不是,那么我可以在创建会话和发送消息之前重新连接。
JMS 不提供任何方法来检查连接是否处于活动状态。您应该简单地使用连接,如果抛出任何异常,那么您应该相应地处理它们(例如,在现有的
close()
上调用Connection
并使用ConnectionFactory
创建另一个)。
MessageListener
并因此等待回调(即不主动调用 JMS 方法),那么您应该使用 ExceptionListener
注册 Connection.setExceptionListener()
。