我正在尝试为 ActiveMQ 服务器实现监控服务。在那里我实现了一个轮询服务来定期连接到 ActiveMQ 服务器并执行队列浏览操作来对 ActiveMQ 服务器进行健康检查。
这是我用来启动连接的代码片段。
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
:)