Я использую драйвер DataStax Cassandra Java 2.1.2, чтобы клиенты подключались к одному из трех центров обработки данных, например:
.withLoadBalancingPolicy(новая TokenAwarePolicy(новая DCAwareRoundRobinPolicy("DC1",1)))
Это устанавливает DC1 как локальный центр обработки данных, но также заставляет драйвер установить одно соединение с двумя другими удаленными центрами обработки данных.
Теперь, если некоторые из узлов в локальном центре обработки данных не работают, клиент не сможет получить локальный кворум на операторе вставки, и будет выдано исключение UnavailableException. Но в удаленных центрах обработки данных имеется достаточно узлов, чтобы вставка могла получить кворум и завершиться успешно, поэтому я хотел бы, чтобы драйвер повторил попытку вставки в другие центры обработки данных. Но как сказать водителю сделать это?
Похоже, есть способ настроить RetryPolicy на повторную попытку с более низким уровнем согласованности, но я ничего не вижу о повторной попытке в удаленный центр обработки данных.
Если все узлы в DC1 не работают, то драйвер пытается выполнить вставку в удаленном центре обработки данных, где это удается.