Java连接Cassandra

1.Cassandra驱动选择

maven依赖配置pom.xml

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>3.1.2</version>
</dependency>

2.单节点连接和集群连接代码

package weixuan.space.cassnadra;

import com.datastax.driver.core.*;
import com.datastax.driver.core.policies.ConstantReconnectionPolicy;
import com.datastax.driver.core.policies.DowngradingConsistencyRetryPolicy;

import java.net.InetSocketAddress;

/**
 * Created by geweixuan on 2018/12/5.
 */
public class ConnectTest {

    /**
     * 指定连接node
     */
    public static void connectToNode() {
        Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").withPort(9042).build();
        //获取并输出相关的集群信息
        Metadata metadata = cluster.getMetadata();
        //getAllHosts() 获取所有节点连接的信息
        for (Host host : metadata.getAllHosts()) {
            System.out.println("------" + host.getAddress());
        }
        //Metadata原数据对象 输出键空间
        for (KeyspaceMetadata keyspaceMetadata : metadata.getKeyspaces()) {
            System.out.println("--------" + keyspaceMetadata.getName());
        }
        //关闭进程
        cluster.close();
        System.out.println("connectToNode go to end");
    }

    /**
     * 连接至集群
     * Cluster 四种Retry重试策略:(对数据库的操作失败后的重试)
     * 1.DefaultRetryPolicy 没有查询到数据,或者写入时超时的情况下进行重新查询
     * 2.DowngradingConsistencyRetryPolicy 与DefaultRetryPolicy一样,不同点是考虑了最终数据一致性问题
     * 3.FallthroughRetryPolicy 这一策略不重试查询,但允许客户端业务逻辑实现重试
     * 4.LoggingRetryPolicy 不重试查询,用来记录日志信息,info级别
     *
     * Cluster 两种节点重连策略:(节点连接不上重新连接)
     * 1.ConstantReconnectionPolicy 固定时间间隔进行重连
     * 2.ExponentialReconnectionPolicy 指数级别增加重连时间,但不会超过最大重连时间
     */
    public static void connectToCluster() {
        Cluster cluster = Cluster.builder()
                .addContactPointsWithPorts(new InetSocketAddress("127.0.0.1", 9042))
                .addContactPointsWithPorts(new InetSocketAddress("127.0.0.2", 9042))
                .withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
                .withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
                .build();
        cluster.getConfiguration().getProtocolOptions().setCompression(ProtocolOptions.Compression.LZ4);
        cluster.close();
        System.out.println("connectToCluster go to end");
    }

    public static void main(String[] args) {
        connectToNode();
        connectToCluster();
    }
}

通过获取到的cluster即可获取session,然后进行相关的数据库操作。

转载于:https://blog.csdn.net/qq_23966225/article/details/84812663