有個網友讀了我前面幾篇關於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);