Проверка подключения Hector Spring Cassandra

В моем веб-приложении на основе Java-Spring я подключаюсь к базе данных Cassandra, используя Гектор и Спринг.

Соединение работает просто отлично, но я хотел бы иметь возможность проверить соединение.

Поэтому, если я преднамеренно предоставлю CassandraHostConfigurator неправильный хост, я получу ошибку:

ERROR connection.HConnectionManager: Could not start connection pool for host <myhost:myport>

Это нормально, конечно. Но как я могу проверить это соединение?

Если я определяю соединение прагматически (а не через контекст пружины), это ясно, но через контекст пружины не совсем понятно, как его проверить.

Вы можете придумать идею?


person forhas    schedule 30.07.2013    source источник


Ответы (1)


Поскольку я не мог придумать и найти удовлетворительный ответ, я решил прагматично определить свое соединение и использовать простой запрос:

private ColumnFamilyResult<String, String> readFromDb(Keyspace keyspace) {
ColumnFamilyTemplate<String, String> template = new ThriftColumnFamilyTemplate<String, String>(keyspace, tableName, StringSerializer.get(),
    StringSerializer.get());
// It doesn't matter if the column actually exists or not since we only check the
// connection. In case of connection failure an exception is thrown,
// else something comes back.
return template.queryColumns("some_column");
}

И мой тест проверяет, что возвращаемый объект не нулевой.

Другой способ, который отлично работает:

public boolean isConnected() {
List<KeyspaceDefinition> keyspaces = null;
try {
    keyspaces = cluster.describeKeyspaces();
} catch (HectorException e) {
    return false;
}
return (!CollectionUtils.isEmpty(keyspaces));
}
person forhas    schedule 30.07.2013