java - Cassandra QueryLogger 引入 NoHostAvailableException
问题描述
我有一个 Spring Boot 应用程序,我使用了将 AbstractCassandraConfiguration 扩展为引导 Cassandra 的模式。这一切都很好。我现在想打开查询日志记录,所以我尝试实现这种模式:
https://github.com/spring-projects/spring-boot/issues/7312#issuecomment-358448437
为此,我将 AbstractCassandraConfiguration 实现更新为: 1. 成为 @Configuration 类 2. 添加 Bean QueryLogger Bean
但是在运行时,我开始收到 NoHostAvailableException。
由于之前和之后的代码很相似,所以我只是将其全部粘贴并指出新的破坏代码。
我能感觉到连接被破坏了,但也觉得我的模式太标准了,不知道发生了什么!!!任何提示表示赞赏。谢谢
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 MILLISECONDS 后超时)));嵌套异常是 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。
解决方案
推荐阅读
- c++ - 为整数定义的变量输入浮点数时 std::cin 的奇怪行为
- algorithm - AVL 树再平衡算法:如何在 Zig-Zig 和 Zig-Zag 情况之间做出决定?
- json - 通过键截取值的迭代函数
- java - 将值数组添加到已经存在的数组
- javascript - 为什么在定义后立即调用此函数时返回最后一个参数
- javascript - Javascript 无法正确计算 xorshiftmult。如何让它发挥作用?
- terminal - 带 M1 的 iTerm2 不断重置目录路径(会话恢复不起作用)
- python - AWS Lambda python 返回状态码和 json 正文
- javascript - 在firebase实时数据库和angularfire中过滤多个字段
- html - 我想在 3 个按钮之间留一点空白