2017-01-02 2 views
2

Я пытаюсь реализовать службу мониторинга для сервера ActiveMQ. Там я применил службу опроса, чтобы периодически подключаться к серверу ActiveMQ и выполнять операцию просмотра очереди для проверки работоспособности на сервере ActiveMQ.Запуск клиента ActiveMQ java зависает, когда сервер недоступен

Вот фрагмент кода, который я использую для начала соединения.

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() вызова зависает, не бросать ошибку. Для целей мониторинга мне нужно это обнаружить.

Я делаю что-то неправильно здесь или есть лучший способ сделать это?

UPDATE: Это происходит только тогда, когда я использую отказоустойчивой на основе ActiveMQ URL (например: failover:(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false иначе это работа, как и ожидалось, что он бросает JMSException (например: ssl://192.168.1.112:61617)

+0

Ваш адрес основан на отказоустойчивости? –

+0

да есть. 'failover: (ssl: //192.168.1.112: 61617, ssl: //192.168.1.112: 61619)? randomize = false' – dammina

ответ

1

Таким образом, для отказоустойчивого транспорта:

maxReconnectAttempts: Значение по умолчанию = -1 | 0

От ActiveMQ 5.6: по умолчанию -1, повторите попытку. 0 означает запрет повторного подключения, например: просто попробуйте подключиться один раз. Перед тем, как ActiveMQ 5.6: по умолчанию 0, повторите попытку навсегда. Все Варианты ActiveMQ: значение> 0 обозначает максимальное количество повторных попыток подключения до того, как ошибка будет отправлена ​​обратно клиенту.

+0

спасибо, что решила проблему :) – dammina

Смежные вопросы