Как программно установить DcInferringLoadBalancingPolicy в CqlSessionBuilder - PullRequest
0 голосов
/ 25 февраля 2020

Я использую 4.4.0 datastax- java -драйвер. В моем сценарии я должен указать точки контакта при подключении к удаленному кластеру. Если я это делаю, я получаю следующую ошибку - Since you provided explicit contact points, the local DC must be explicitly set. У меня также нет возможности явно указать это, поскольку я подключаюсь к другому кластеру по требованию, который может находиться в другом центре обработки данных. Я нашел вариант, чтобы установить DcInferringLoadBalancingPolicy для вывода центра обработки данных, но я не уверен, как установить это в CqlSessionBuilder. Пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 25 февраля 2020

Вы должны быть очень осторожны с этим - это в основном для людей, которые создают инструменты, такие как IDE и т. Д. c. Для приложений лучше передать имя центра данных явно - либо через файл конфигурации, либо через Java системное свойство .

Короче говоря, это можно сделать следующим образом:

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();
...