我在Java 7中使用com.datastax.cassandra cassandra-driver-core版本1.0.0連接到Apache Cassandra(版本1.2.12)。儘管1.2.12是我今天使用的版本,但該版本可能會發生變化,如果可能,我想知道如何以編程方式檢索Cassandra的版本(可能使用驅動程序,儘管我向其他人開放建議)。如何獲得Cassandra版本以編程方式
我發現Cluster.getMetadata()
和Cluster.getMetadata.getKeyspace()
分別返回Metadata
對象和KeyspaceMetadata
對象,但那些都似乎有什麼方法將返回版本。
任何幫助表示讚賞
ANSWER
由於雙方米哈伊爾和布萊斯,我想出了答案。此方法返回Cassandra版本,如果羣集關閉,則返回「Offline」。我已經測試了這個代碼,它完美地工作。
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";
}
再次感謝你們!
你的回答是非常有益的,如果我能有顯着兩個答案是正確的,我會;然而,米哈伊爾擊敗了你,他的回答也非常有幫助,所以他得到了一個很大的綠色選中標記,不幸的是,你必須得到+1。儘管如此,再次感謝您的幫助! – 2014-09-30 21:12:03