ActiveMQ非活动经纪人

时间:2019-08-20 12:05:38

标签: java spring spring-boot activemq

问题是我已经定义了一些代理uri,该代理uri可能不活跃。 这样createConnection中的ActiveMQConnectionFactory就不会抛出任何异常。我需要处理这种情况,如果createConnection由于uri而无法使用,那么我应该将我的服务标记为不健康。

boolean healthy = true;
Connection conn = null;
try {
    final ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("failover:(tcp://localhost:8080)?jms.prefetchPolicy.all=0&initialReconnectDelay=1000&maxReconnectDelay=30000&maxReconnectAttempts=20");
    conn = factory.createConnection(this.userName, this.password);
} catch (JMSException e) {
    healthy = false;
} finally {
    if (conn != null) {
        try {
            conn.close();
        } catch (JMSException e) {
            healthy = false;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

因此,您希望创建连接失败并出现异常,但同时也在使用故障转移传输吗?这对您来说不是很奇怪吗?

使用故障转移传输会导致创建成功,因为故障转移传输完全按照您要求的方式进行操作,即尝试重复建立连接,直到进行了配置的尝试次数为止。一旦故障转移传输放弃,调用诸如create session之类的方法将阻塞并最终引发错误。或者,您可以设置一个异常侦听器,该异常侦听器将在连接关闭后发出信号,因为故障转移传输用尽了重新连接尝试。