, 나는 그것에 대해 더 읽고 몇 가지 테스트를 만든 이유가 있습니다.
일부 환경에서는 테스트 메시지를 보내면 (Laures) 문제가 될 수 있습니다.
"정상적인"방법은 TransportListener (Anand 제안)를 설정하는 것이지만 제공된 인터페이스를 실제로 구현하고보고 된 이벤트에 반응합니다.
다른 ActiveMQ 초보자를 위해 (지난 달까지) 저는 샘플 시작 구현을 게시합니다. 그냥 각 이벤트에 대한 로깅을 씁니다. 실제 환경에서 하나 ... transportResumed()
또는 이와 유사한 많은 것을 더 때까지 transportInterupted()
에 재 연결 재판에 대해
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());
재밌게!
브로커가 다운 되어도 응답하지 않거나 막대한 네트워크 지연이있는 경우에도 catch 블록이 실행됩니까? – Neeraj
브로커가 다운되면 createConnection 호출이 실패하고 예외가 발견됩니다. 네트워크 지연을 확인하려면 원격 대상에서 수동으로 서버에 ping을 수행해야합니다.루프백 장치가 결코 느려지지 않습니다. – Laures