Hector経由でCassandra dbに接続しています。
(意図的に) 間違ったソケットを指定すると、次のメッセージで接続が失敗します。
INFO CassandraHostRetryService - Downed Host Retry service started with queue size -1 and retry delay 10s
ERROR HConnectionManager - Could not start connection pool for host 132.202.35.14(160.202.35.14):9160
INFO CassandraHostRetryService - Host detected as down was added to retry queue: 132.202.35.14(160.202.35.14):9160
INFO JmxMonitor - Registering JMX me.prettyprint.cassandra.service_RTBCluster:ServiceType=hector,MonitorType=hector
java.net.ConnectException: Connection timed out: connect
そして、数秒ごとに試行を続けます。接続が成功したら、いくつかのアクションを実行したいので、接続が失敗したか成功したかを知りたいです。
私のコードは次のようになります。
CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(this.socket);
cluster = new ThriftCluster(this.clusterName, cassandraHostConfigurator);
ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel();
consistencyLevelPolicy.setDefaultReadConsistencyLevel(getConsistencyLevelPolicy());
keyspace = HFactory.createKeyspace(keyspaceName, cluster, consistencyLevelPolicy);
fireConnectionEvent(true);
ご覧のとおり、接続イベントを発生させていますが、接続が成功したか失敗したかに関係なく、接続イベントを発生させています。この 2 つを区別する方法はありません。キャッチできるイベントや、接続状態を通知できる他の方法はありますか?