加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 04:22:45 所属栏目:Java 来源:网络整理
导读:我在 Java 7中使用com.datastax.cassandra cassandra-driver-core version 1.0.0连接到Apache Cassandra(版本1.2.12).虽然1.2.12是我今天使用的版本,但该版本可能会发生变化,如果可能的话,我想知道如何以编程方式检索Cassandra的版本(大概是使用驱动程序,尽
我在 Java 7中使用com.datastax.cassandra cassandra-driver-core version 1.0.0连接到Apache Cassandra(版本1.2.12).虽然1.2.12是我今天使用的版本,但该版本可能会发生变化,如果可能的话,我想知道如何以编程方式检索Cassandra的版本(大概是使用驱动程序,尽管我对其他人开放建议).

我找到了Cluster.getMetadata()和Cluster.getMetadata.getKeyspace(),它们分别返回了一个Metadata对象和一个KeyspaceMetadata对象,但是这些对象似乎都没有任何返回版本的方法.

任何帮助表示赞赏

回答

感谢米哈伊尔和布莱斯,我想出了答案.此方法返回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";
}

再次感谢你们!

解决方法

您可以从Cassandra查询版本:从system.local中选择release_version,其中key =’local’;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读