Spring Data Cassandra如何设置有限的连接重试次数?

Posted

技术标签:

【中文标题】Spring Data Cassandra如何设置有限的连接重试次数?【英文标题】:Spring Data Cassandra how to set finite number of connection retries? 【发布时间】:2018-04-08 10:47:29 【问题描述】:

我目前正在实现一个 Spring Boot 微服务,它将数据持久化到单个 Cassandra 数据库节点。如果与数据库的连接丢失,我需要能够设置重试次数以及微服务配置文件中重试之间的毫秒数。我正在使用“spring-boot 1.5.6 版”和 spring-data-cassandra 1.5.6 版“。我能够通过创建CassandraCqlClusterFactoryBean 类型的集群并在其中传递自定义重新连接策略来设置重试之间的毫秒数cluster.setReconnectionPolicy() 方法。但我无法使用自定义重试策略设置重试次数。如果理解正确,重试策略仅处理进行查询的情况,但在我的情况下,我需要设置次数无论是否进行查询,在所有时间重试。经过几天的研究,我能够产生一个丑陋的 hack,它基本上使用自定义 ReconnectionSchedule,并在满足某些条件后停止 Spring Boot 应用程序nextDelayMs() 方法。不过我继续在调试模式下查看源代码,发现ControlConnection 抛出了NoHostAvailableException 异常。所以我查看了有关Control connection 的datastax 官方文档,我发现

即将推出……

那么有人可以告诉我如何正确地实现一种方法来阻止我的 cassandra 驱动程序在预定义的重试次数后尝试重新连接到节点。

提前致谢。

【问题讨论】:

【参考方案1】:

看here 9.3.1。

也许您可以执行一些操作,例如尝试每 x 秒打开一个会话,直到超时到期或成功创建会话。

【讨论】:

以上是关于Spring Data Cassandra如何设置有限的连接重试次数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Spring Boot和Spring Data中使用两个Cassandra数据源?

Spring Data Cassandra:如何使用复合键查询表?

spring-data-cassandra 存储库的多个键空间支持?

具有响应式Cassandra 的Spring Data

如何使用 Spring Data Cassandra 仅查询 1 个字段?

Spring Boot 和 Spring Data with Cassandra:在数据库连接失败时继续