java - 如何以编程方式获取 Cassandra 版本

标签 java cassandra datastax-enterprise

我在 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/

相关文章:

java - 在Eclipse中,如何在WEB-INF/lib文件夹下添加jars文件夹?

java - 在 NatTable 中创建更改事件监听器

java - 如何在 Titan Graph 数据库中使用 Java API 在新顶点和现有顶点之间创建边

cassandra - 设置 `require_client_auth` 的功能

cassandra - 我应该调用 session.close() 和集群吗?每次 Web API 调用后关闭()

java - 在仅具有需要参数的已定义构造函数的类中调用默认构造函数(在 Java 中)

cassandra - 如何在cassandra中使用cql查询获取系统日期

python - 在 cassandra 中处理分页结果

cassandra - 如何检查 Gazzang 是否在加密我的 cassandra 数据?

java - 如何在调用 stopService 方法后停止服务中的线程?在安卓中