、私はそれについての詳細を読んで、いくつかのテストをした理由です。
いくつかの環境でテストメッセージを送信すると、問題が発生することがあります(Laures)。
「通常の方法では、TransportListenerを(Anandとして提案する)設定することができますが、実際には提供されたインターフェイスを実装し、報告されたイベントに反応します。
(他のActiveMQ初心者のために)私はサンプルスタートアップ実装を投稿します。各イベントのログを書き込むだけです。 1は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());
お楽しみに!
ブローカがダウンして応答しなくてもキャッチブロックが実行されますか、またはネットワークの遅延が大きい場合は、 – Neeraj
ブローカが停止しているときにcreateConnection呼び出しが失敗し、例外がキャッチされます。ネットワークの遅延をチェックしたいだけなら、遠隔地から手動でサーバにpingする必要があります。ループバックデバイスは決して遅くありません。 – Laures