cassandra 如何在CqlSessionBuilder中以编程方式设置DcInferringLoadBalancingPolicy

toiithl6  于 2022-11-05  发布在  Cassandra
关注(0)|答案(1)|浏览(209)

我使用的是4.4.0 datastax-java-driver。在我的场景中,当我连接到远程群集时,我必须提供联系点。如果我这样做,我会收到以下错误-Since you provided explicit contact points, the local DC must be explicitly set.。我也没有显式提供此信息的选项,因为我按需连接到不同的群集,这些群集可能位于不同的数据中心。我找到了设置DcInferringLoadBalancingPolicy以推断数据中心的选项,但我不确定如何在CqlSessionBuilder中设置此选项。请帮助我完成此操作。

zour9fqk

zour9fqk1#

您需要非常小心地使用它-它主要是为那些构建工具(如IDE等)的人使用的。对于应用程序本身,最好显式传递数据中心名称-either via config file, or via Java system property
简而言之,它可以如下完成:

ProgrammaticDriverConfigLoaderBuilder configBuilder = 
     DriverConfigLoader.programmaticBuilder();
configBuilder.withClass(DefaultDriverOption.LOAD_BALANCING_POLICY_CLASS,
     DcInferringLoadBalancingPolicy.class);
DriverConfigLoader loader = configBuilder.endProfile().build();
CqlSessionBuilder clusterBuilder = CqlSession.builder()
            .addContactPoints(hosts);
CqlSession session = clusterBuilder.withConfigLoader(loader).build();

相关问题