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

时间:2017-10-26 22:20:10

标签: spring spring-boot cassandra spring-data-cassandra

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

  

即将推出......

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

在9.3.1看here

也许您可以尝试每隔x秒尝试打开一个会话,直到超时到期或会话成功创建。