我正在尝试为ActiveMQ服务器实施监视服务。我在那里实现了轮询服务,以定期连接到ActiveMQ服务器,并执行队列浏览操作以对ActiveMQ Server进行运行状况检查。
这是我用来启动连接的代码片段。
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(amqUrl);
connectionFactory.setTrustStore(amqSslTrustStorePath);
connectionFactory.setTrustStorePassword(amqSslTrustStorePasswd);
connectionFactory.setKeyStore(amqSslKeyStorePath);
connectionFactory.setKeyStorePassword(amqSslKeyStorePasswd);
Connection connection = connectionFactory.createConnection(amqUser, amqPasswd);
connection.start();
问题是当服务器不可用时,
connection.start()
调用挂起而不会引发错误。出于监视目的,我需要检测到这一点。我在这里做错什么了吗,或者有更好的方法吗?
更新:仅当我使用基于故障转移的ActiveMQ url时才会发生(例如:
failover:(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false
,否则它将按预期工作,即抛出JMSException(例如:ssl://192.168.1.112:61617
) 最佳答案
因此对于故障转移传输:
maxReconnectAttempts
:默认值= -1 | 0
从ActiveMQ 5.6:默认为
-1,永远重试。 0表示禁用重新连接,例如:仅尝试连接一次。在ActiveMQ 5.6之前:默认为0,请重试。所有
ActiveMQ版本:值> 0表示最大重新连接数
尝试将错误发送回客户端之前。
关于java - 服务器不可用时,ActiveMQ Java客户端启动挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41426013/