目前我正在以这种方式启动ClusterContext:
AstyanaxContext.Builder builder = new AstyanaxContext.Builder()
.forCluster(clusterName)
.forKeyspace(keyspaceName)
.withAstyanaxConfiguration(getAstyanaxProperties(properties))
.withConnectionPoolConfiguration(getConnectionPoolProperties(properties))
.withConnectionPoolMonitor(connectionPoolMonitor);
clusterContext = builder.buildCluster(ThriftFamilyFactory.getInstance());
clusterContext.start();
cluster = clusterContext.getEntity();
在单个节点开发环境中运行。我正在使用ClusterContext,因为我还想创建一个键空间,列族等。
我是否还需要启动KeyspaceContext?如果是这样,出于什么目的或单个ClusterContext足以用于密钥空间/列族管理和读/写场景?
如果我启动了KeyspaceContext,我看到,根据连接池监视器,添加了2个主机并激活了它们。如果我关闭单个Cassandra节点,我仍然看到1标记为活动,这是令人困惑的。
感谢。
答案 0 :(得分:1)
查看netflix的creating a keyspace文档。它显示您使用Keyspace
对象创建键空间。在页面的下方还有关于创建列族的详细信息。
您初始化AstyanaxContext
然后用来获取Keyspace
对象。
AstyanaxContext<Keyspace> ctx = new AstyanaxContext.Builder()
.forKeyspace("MyKeyspace")
// Additional configuration parameters
.buildKeyspace(ThriftFamilyFactory.getInstance());
ctx.start();
Keyspace keyspace = ctx.getClient();
然后你可以创建一个键空间(下面)。请注意,如果您在forKeyspace(...)
函数中指定的键空间尚未创建,则无关紧要。
// Using simple strategy
keyspace.createKeyspace(ImmutableMap.<String, Object>builder()
.put("strategy_options", ImmutableMap.<String, Object>builder()
.put("replication_factor", "1")
.build())
.put("strategy_class", "SimpleStrategy")
.build()
);
您现在可以使用和重复使用此Keyspace
来执行任意数量的插入/删除/键空间和列族创建。