一個完整的標準的cassandra連接代碼(java版)

有個網友讀了我前面幾篇關於cassandra的文章後,向我反映,還不知道怎麼安裝cassandra呢,我一想也是啊,都沒安裝,怎麼開始其他的呢,所以想安裝順序,從開始的開始講。今天一個同事問我關於cassandra的java api,遂整理的此篇,可能有不完善的地方,敬請斧正。

需要引入的pom依賴:

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

<dependency>
	<groupId>com.datastax.cassandra</groupId>
	<artifactId>cassandra-driver-extras</artifactId>
	<version>3.1.1</version>
</dependency>


        String[] hosts = new String[]{"192.168.1.1", "192.168.1.2", "192.168.1.3"};//cassandra主機地址

        //認證配置
        AuthProvider authProvider = new PlainTextAuthProvider("ershixiong", "123456");


        LoadBalancingPolicy lbp = new TokenAwarePolicy(
                DCAwareRoundRobinPolicy.builder().withLocalDc("myDC").build()
        );

        //讀超時或連接超時設置
        SocketOptions so = new SocketOptions().setReadTimeoutMillis(3000).setConnectTimeoutMillis(3000);

        //連接池配置
        //PoolingOptions poolingOptions = new PoolingOptions().setConnectionsPerHost(HostDistance.LOCAL, 2, 3);
        //集羣在同一個機房用HostDistance.LOCAL   不同的機房用HostDistance.REMOTE   忽略用HostDistance.IGNORED
        PoolingOptions poolingOptions= new PoolingOptions()
                .setMaxRequestsPerConnection(HostDistance.LOCAL, 64)//每個連接最多允許64個併發請求
                .setCoreConnectionsPerHost(HostDistance.LOCAL, 2)//和集羣裏的每個機器都至少有2個連接
                .setMaxConnectionsPerHost(HostDistance.LOCAL, 6);//和集羣裏的每個機器都最多有6個連接

        //查詢配置
        //設置一致性級別ANY(0),ONE(1),TWO(2),THREE(3),QUORUM(4),ALL(5),LOCAL_QUORUM(6),EACH_QUORUM(7),SERIAL(8),LOCAL_SERIAL(9),LOCAL_ONE(10);
        //可以在每次生成查詢statement的時候設置,也可以像這樣全局設置
        QueryOptions queryOptions = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ONE);

        //重試策略
        RetryPolicy retryPolicy = DowngradingConsistencyRetryPolicy.INSTANCE;

        int port = 9042;//端口號

        String keyspace = "keyspacename";//要連接的庫,可以不寫

        Cluster cluster = Cluster.builder()
                .addContactPoints(hosts)
                .withAuthProvider(authProvider)
                .withLoadBalancingPolicy(lbp)
                .withSocketOptions(so)
                .withPoolingOptions(poolingOptions)
                .withQueryOptions(queryOptions)
                .withRetryPolicy(retryPolicy)
                .withPort(port)
                .build();
        Session session = cluster.connect(keyspace);



參考:http://docs.datastax.com/en/developer/java-driver-dse/1.2/upgrade_guide/migrating_from_astyanax/queries_and_results/

http://zhaoyanblog.com/archives/547.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章