我在 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 版本,如果集群已关闭,则返回“离线”。我已经测试了这段代码,它可以完美运行。
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";
}
再次感谢大家!
最佳答案
您可以从 Cassandra 查询版本:select release_version from system.local where key = 'local';
关于java - 如何以编程方式获取 Cassandra 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126320/