【java】vertx从入门到放弃——入门(九)Cassandra

cassandra是一个去中心化的Nosql数据库,vertx通过一个非常简单的方式就可以连接到远程的cassandra数据库。

 

想要连接Cassandra数据库,首先要安装一个,如何安装漫天飞舞,这里就不说了,可以用另外一台电脑,通过docker快速安装。

 

假设现在万事俱备,只差vertx了,首先是依赖vertx连接cassandra的jar包


    io.vertx
    vertx-cassandra-client
    4.0.0

 

然后是连接代码如下:

package cn.zcrazy.giveupvertx.cassandra;
import com.datastax.oss.driver.api.core.cql.Row;
import io.vertx.cassandra.CassandraClient;
import io.vertx.cassandra.CassandraClientOptions;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Launcher;
import java.net.InetSocketAddress;
public class SimpleExample extends AbstractVerticle {
    public static void main(String[] args) {
        Launcher.main(new String[]{"run", SimpleExample.class.getName()});
    }
    @Override
    public void start() {
        CassandraClientOptions cassandraClientOptions = new CassandraClientOptions();
        InetSocketAddress inetSocketAddress = new InetSocketAddress("your ip address",9042);
        cassandraClientOptions.addContactPoint(inetSocketAddress)
                .setKeyspace("testkeyspace")
                .dataStaxClusterBuilder()
                .withLocalDatacenter("datacenter1");
        CassandraClient client = CassandraClient.createShared(vertx,cassandraClientOptions);
        client.execute("select release_version from system.local", ar -> {
            if (ar.succeeded()) {
                Row row = ar.result().one();
                String releaseVersion = row.getString("release_version");
                System.out.println("Release version is: " + releaseVersion);
            } else {
                ar.cause().printStackTrace();
            }
        });
    }
}

 

【java】vertx从入门到放弃——入门(九)Cassandra_第1张图片

 

以上就是今天的全部内容,下面进入吐槽时间。

 

官网给的例子太不负责任了,难道想要连接Cassandra只能在本地装一个Cassandra吗?然后连接的时候一直给我报如下这个错误:

 

java.lang.IllegalStateException: Since you provided explicit contact points, the local DC must be explicitly set (see basic.load-balancing-policy.local-datacenter in the config, or set it programmatically with SessionBuilder.withLocalDatacenter). Current contact points are: Node(endPoint=/:9042, hostId=f198ab04-6a66-4ae6-9a4b-f539ca3efde0, hashCode=21c5a83b)=datacenter1. Current DCs in this cluster are: datacenter1

 

搜遍了没有用的百度,最后只找到了一条相关,说是因为数据库和驱动版本的问题,反正就是把我的方向给带跑偏的那种,就在我心灰意冷准备放弃的时候,我又回来仔细读了一下这个错误,你还别说这个错误已经明明白白的说明了怎么解决,于是我就尝试着在代码里面找SessionBuilder这个玩意,最后终于让我找到了这么两句

.dataStaxClusterBuilder()
.withLocalDatacenter("datacenter1");

然后就通过了,什么鬼设定!全是套路,全是剧本!

你可能感兴趣的:(java,vert.x)