Мне нужно решение для того же вопроса, поэтому я прочитал об этом больше и сделал несколько тестов.
Отправка тестового сообщения (как предложено Laures ) может быть проблемой в некоторых средах.
«Нормальным» способом было бы установить TransportListener (как предложено Anand ), но реально реализовать предоставленный интерфейс и реагировать на сообщаемые события.
Для других новичков в ActiveMQ (как и до прошлого месяца) я публикую пример реализации при запуске. Он просто записывает логирование для каждого события. В реальной среде можно подумать о пробном повторном подключении в transportInterupted()
до transportResumed()
или аналогичном и многих других вещах ...
import java.io.IOException;
import org.apache.activemq.transport.TransportListener;
import org.apache.log4j.Logger;
class ConnectionStateMonitor
implements TransportListener
{
private static final Logger log = Logger.getLogger(ConnectionStateMonitor.class);
@Override
public void onCommand(Object command)
{
log.debug("Command detected: '" + command + "'");
}
@Override
public void onException(IOException exception)
{
log.error("Exception detected: '" + exception + "'");
}
@Override
public void transportInterupted()
{
log.error("Transport interuption detected.");
}
@Override
public void transportResumed()
{
log.info("Transport resumption detected.");
}
}
TransportListener может быть установлен, например ::
ActiveMQConnection connection = (ActiveMQConnection) _factory.createConnection();
...
connection.addTransportListener(new ConnectionStateMonitor());
Веселись!