Astyanax 3.10.x与Cassandra 2.1.x版本兼容。以下是一个示例代码,展示了如何使用Astyanax 3.10.x与Cassandra进行连接和查询:
import com.netflix.astyanax.AstyanaxContext;
import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
import com.netflix.astyanax.connectionpool.NodeDiscoveryType;
import com.netflix.astyanax.connectionpool.OperationResult;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import com.netflix.astyanax.model.ColumnFamily;
import com.netflix.astyanax.model.ColumnList;
import com.netflix.astyanax.serializers.StringSerializer;
import com.netflix.astyanax.thrift.ThriftFamilyFactory;
public class AstyanaxExample {
public static void main(String[] args) {
// 创建Astyanax上下文
AstyanaxContext context = new AstyanaxContext.Builder()
.forCluster("ClusterName")
.forKeyspace("KeyspaceName")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(9160)
.setMaxConnsPerHost(1)
.setSeeds("127.0.0.1:9160")
)
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
context.start();
// 获取Keyspace
Keyspace keyspace = context.getClient();
// 定义ColumnFamily
ColumnFamily columnFamily = ColumnFamily.newColumnFamily(
"cfName",
StringSerializer.get(),
StringSerializer.get());
// 插入数据
MutationBatch mutationBatch = keyspace.prepareMutationBatch();
mutationBatch.withRow(columnFamily, "rowKey")
.putColumn("column1", "value1", null)
.putColumn("column2", "value2", null);
try {
mutationBatch.execute();
} catch (ConnectionException e) {
e.printStackTrace();
}
// 查询数据
try {
OperationResult> result = keyspace.prepareQuery(columnFamily)
.getKey("rowKey")
.execute();
ColumnList columns = result.getResult();
System.out.println(columns.getStringValue("column1", null));
System.out.println(columns.getStringValue("column2", null));
} catch (ConnectionException e) {
e.printStackTrace();
}
// 关闭Astyanax上下文
context.shutdown();
}
}
请注意,以上示例使用的是Astyanax 3.10.x版本的API。要与其他版本的Cassandra进行兼容,您可能需要相应调整代码。