[英]ActiveMQ:'channel inactive for too long' exceptions stop broker messaging
[英]ActiveMQ inactive broker
问题是我定义了一些可能处于非活动状态的代理 uri。 然后来自ActiveMQConnectionFactory
createConnection
不会抛出任何异常。 我需要处理这种情况,如果由于 uri 不可用而createConnection
不起作用,那么我应该将我的服务标记为不健康。
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;
}
}
}
因此,您希望创建连接失败并出现异常,但您也在使用故障转移传输? 你觉得这不矛盾吗?
故障转移传输使用导致创建成功,因为故障转移传输正在执行您要求它执行的操作,即反复尝试建立连接,直到进行配置的尝试次数。 一旦故障转移传输放弃,调用像 create session 这样的方法将阻塞并最终抛出错误。 或者,您可以设置一个异常侦听器,该侦听器将在连接关闭时发出信号,因为故障转移传输已用完重新连接尝试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.