【问题标题】:ActiveMQ inactive brokerActiveMQ 非活动代理
【发布时间】:2019-08-20 21:42:58
【问题描述】:

问题是我定义了一些可能处于非活动状态的代理 uri。 然后来自ActiveMQConnectionFactorycreateConnection 不会抛出任何异常。我需要处理这种情况,如果 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;
        }
    }
}

【问题讨论】:

  • 故障转移:(tcp://localhost:8080)?jms.prefetchPolicy.all=0&initialReconnectDelay=1000&maxReconnectDelay=30000&maxReconnectAttempts=20
  • 没错,就是这样。不,我没有尝试创建会话。我会试试这个并告知。

标签: java spring spring-boot activemq


【解决方案1】:

所以您希望创建连接失败并出现异常,但您还使用故障转移传输?你不觉得这很矛盾吗?

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

【讨论】:

  • 谢谢,异常监听器可能就是我要找的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 2012-06-03
相关资源
最近更新 更多