我在Java 7中使用com.datastax.cassandra cassandra-driver-core版本1.0.0连接到Apache Cassandra(版本1.2.12)。虽然我今天使用的是1.2.12版本,但该版本可能会更改,如果可能的话,我想知道如何通过编程方式检索Cassandra的版本(可能使用驱动程序,尽管我也接受其他建议)。
我找到了Cluster.getMetadata()和Cluster.getMetadata.getKeyspace(),它们分别返回Metadata对象和KeyspaceMetadata对象,但这两个对象似乎都没有任何方法可以返回版本。
感谢Mikhail和Bryce,我已经得出答案。此方法返回Cassandra版本,如果群集处于离线状态,则返回“离线”。我已测试此代码,它完美无缺。
再次感谢各位!
我找到了Cluster.getMetadata()和Cluster.getMetadata.getKeyspace(),它们分别返回Metadata对象和KeyspaceMetadata对象,但这两个对象似乎都没有任何方法可以返回版本。
感谢Mikhail和Bryce,我已经得出答案。此方法返回Cassandra版本,如果群集处于离线状态,则返回“离线”。我已测试此代码,它完美无缺。
private String getCassandraVersion() {
String[] cassandraServers = <insert your servers here>;
String keyspace = "system";
Session session = null;
try {
Cluster cluster = Cluster.builder().addContactPoints(cassandraServers)
.build();
session = cluster.connect(keyspace);
PreparedStatement ps = session.prepare("select release_version from system.local where key = 'local'");
ResultSet result = session.execute(ps.bind());
Row versionRow = result.one();
if (versionRow != null) {
return versionRow.getString("release_version");
}
} catch (Exception ex) {
_log.error("Failed to connect to '" + keyspace + "' keyspace!");
} finally {
if(session != null) {
try {
session.shutdown();
} catch (Exception ex) {
//NOP
}
}
}
return "Offline";
}
再次感谢各位!