Мы устанавливаем уровень согласованности, LOCAL_QUORUM по умолчанию.Мы используем это во время сборки кластера в конфигурации -
Cluster.builder().addContactPoints(environment.getProperty("cassandra.contact-points").split(",")).withPort(port)
.withQueryOptions(
new QueryOptions().setConsistencyLevel(ConsistencyLevel.valueOf(environment.getProperty("cassandra.consistency-level")))
.setSerialConsistencyLevel(ConsistencyLevel.valueOf(environment.getProperty("cassandra.consistency-level"))))
.withAuthProvider(new DsePlainTextAuthProvider(environment.getProperty("cassandra.username"),
environment.getProperty("cassandra.password")));
И в файле application.properties мы предоставляем уровень согласованности как -
cassandra.consistency-level=LOCAL_QUORUM
Теперь мы неЯ не хочу использовать LOCAL_QUORUM для некоторых запросов.Для этого мы создали собственный репозиторий, как описано в Здесь .
Мы представили метод сохранения с WriteOptions в пользовательском репозитории -
@NoRepositoryBean
public interface CustomizedUserRepository<T> {
<S extends T> S save( S entity, ConsistencyLevel consistencyLevel);
}
И его реализация -
public class UserRepositoryImpl implements CustomizedUserRepository<User> {
@Autowired
CassandraOperations cassandraOperations;
@Override
public <S extends User> S save( S entity, ConsistencyLevel consistencyLevel) {
WriteOptions writeOptions = WriteOptions.builder().consistencyLevel(consistencyLevel).build();
cassandraOperations.insert(entity, writeOptions);
return entity;
}
}
И, называя это в классе обслуживания как -
@Override
public User createUser( User user) {
return userRepository.save(user, ConsistencyLevel.ONE);
}
Работает отлично.
Теперь вопрос в том, будет ли эта реализация переопределять стандартное значение (локальный кворум) для сохранения функциональности пользователя?Как мне убедиться, что это работает как -
- Для saveUser () Уровень согласованности равен ОДИН
- Для других запросов Уровень согласованности равен Локальному кворуму
Мы попытались зарегистрировать QueryLogger в кластере, чтобы проверить, можем ли мы видеть информацию об уровне согласованности в журналах, но он печатает только запросы.