gpt4 book ai didi

java - Cassandra java 驱动程序设置全局一致性级别

转载 作者:行者123 更新时间:2023-12-02 08:16:00 26 4
gpt4 key购买 nike

所以在 datastax doc ,它指出 ConsistencyLevel 可以通过 QueryOptions 进行全局设置:

QueryOptions qo = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ALL);

我注意到这不是静态方法并返回 QueryOptions 的实例。这是否意味着简单地调用此方法不会全局设置默认一致性级别,并且我在连接到 Cassandra 集群时需要使用 QueryOptions ?我的意思是,是否需要以下代码(在构建 Cluster 对象时设置 QueryOption)

cluster = Cluster.builder().addContactPoint("192.168.0.30")
.withQueryOptions(new QueryOptions()
.setConsistencyLevel(ConsistencyLevel.ONE)
.withRetryPolicy(DefaultRetryPolicy.INSTANCE)
.withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy()))
.build();
session = cluster.connect("demo");

我的问题是我无权访问构建集群实例的代码。这是否意味着我无法设置全局一致性级别并且必须依赖于每个 Statement 进行设置?

最佳答案

Dataxdriver 表示您可以通过 QueryOptions 设置全局值,并且对于特定查询的一致性级别,您可以为每个语句定义。如果您无权访问集群构建代码,可以使用 getConsistencyLevel 方法检查一致性级别的值。如果这是您想为大多数语句设置的,那么您的工作会更容易。否则,您将需要根据每个语句来定义它。

请查看Best practice for managing different consistency levels using the Datastax Cassandra native java client

它描述了为什么每个语句具有一致性级别比具有全局值更好。

回答您的问题

“我注意到这不是静态方法并返回 QueryOptions 的实例。这是否意味着仅调用此方法不会全局设置默认一致性级别,并且在连接到 Cassandra 集群时需要使用 QueryOptions?我的意思是,是否需要以下代码(在构建 Cluster 对象时设置 QueryOption)”

即使您没有按照 documentation 对集群构建器对象调用 withQueryOptions它使用默认查询选项创建实例。

检查DefaultConstructor of QueryOptions构造函数创建一个查询选项,其默认值为一致性级别和其他参数。

同时按照Cluster builder doc , withQueryOptions 还返回 Cluster.Builder 的实例,您将需要再次构建它(我猜这不是您想要的)。

所以总结是:设置全局一致性级别的唯一方法是在创建集群构建器对象时。在您的情况下,当您无权访问构建它的代码时,您必须为每个语句设置值,或者最终可能会构建新的语句(免责声明:不应该这样做!!)并使用它。

关于java - Cassandra java 驱动程序设置全局一致性级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com