У меня есть приложение весенней загрузки, в котором я использовал шаблон расширения AbstractCassandraConfiguration до bootstrap Cassandra. Все работает прекрасно. Теперь я хочу включить ведение журнала запросов, поэтому я попытался реализовать этот шаблон:
https://github.com/spring-projects/spring-boot/issues/7312#issuecomment -358448437
Я делаю это путем обновления моей реализации AbstractCassandraConfiguration до : 1. Будьте классом @Configuration. 2. Добавление Bean QueryLogger Bean
Но затем во время выполнения я начинаю получать исключение NoHostAvailableException.
Поскольку код до и после v похож, плохо просто вставьте все это и укажите новый, ломающий код.
Я чувствую, что соединение повреждено, но также чувствую, что мой шаблон настолько стандартный, что я не уверен, что происходит !!! Любые советы приветствуются. Спасибо
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.AbstractCassandraConfiguration;
import org.springframework.data.cassandra.config.SchemaAction;
import com.datastax.driver.core.AuthProvider;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.PlainTextAuthProvider;
import com.datastax.driver.core.QueryLogger;
@Configuration // **** NEW ****
public class CassandraConfig extends AbstractCassandraConfiguration {
@Value("${spring.data.cassandra.contact-points:placeholder}")
private String contactPoints;
@Value("${spring.data.cassandra.port:0000}")
private int port;
@Value("${spring.data.cassandra.keyspace-name:placeholder}")
private String keySpace;
@Value("${spring.data.cassandra.username}")
private String username;
@Value("${spring.data.cassandra.password}")
private String password;
@Value("${spring.data.cassandra.schema-action}")
private String schemaAction;
// removed all the @Override getters for above props
// **** NEW ****
@Bean
public QueryLogger queryLogger(Cluster cluster) {
QueryLogger queryLogger = QueryLogger.builder().build();
cluster.register(queryLogger);
return queryLogger;
}
}
Исключение:
[dispatcherServlet] в контексте с путем [] вызвало исключение [Ошибка обработки запроса; вложенным исключением является org.springframework.data.cassandra.CassandraConnectionFailureException: Query; CQL [SELECT * FROM my_table;]; Все хосты попытались выполнить запрос (неудачно: cassandradb01.AAA.test.XXXX.com/10.18.51.15:9042 (com.datastax.driver.core.exceptions.BusyPoolException: [cassandradb01.AAA.test.XXXX.com /10.18.51.15] Пул занят (нет доступного соединения и тайм-аут после 5000 МИЛЛИСЕКОНД))); вложенное исключение: com.datastax.driver.core.exceptions.NoHostAvailableException: все хосты попытались выполнить запрос (неудачно: cassandradb01.AAA.test.XXXX.com/10.18.51.15:9042 (com.datastax.driver.core) .exceptions.BusyPoolException: [cassandradb01.AAA.test.XXXX.com/10.18.51.15] Пул занят (нет доступного соединения и истек тайм-аут после 5000 МИЛЛИСЕКОНД)))] с root причиной