Cassandra Cluster Recovery

时间:2016-04-22 18:02:21

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

我有一个使用Spring Data for Cassandra的Spring Boot应用程序。其中一个要求是即使Cassandra Cluster不可用,应用程序也会启动。应用程序记录该情况,其所有端点将无法正常工作,但应用程序不会关闭。在此期间,它应该重试连接到群集。当群集可用时,应用程序应该开始正常运行。 如果我能够在应用程序启动期间连接并且群集在此之后变得不可用,则cassandra java驱动程序能够管理重试。 如何在应用程序启动期间管理重试并仍使用Spring Data中的Cassandra存储库?

感谢名单

2 个答案:

答案 0 :(得分:1)

如果Apache Cassandra不可用,则可以启动Spring Boot应用程序,但您需要使用hashmap自行定义SessionCassandraTemplate bean。这些bean是@Lazy开箱即用的,但是会急切地初始化(默认行为),这会创建CassandraAutoConfigurationSession需要连接到Cassandra,如果它没有被懒惰地初始化,它将阻止启动。

以下代码将懒惰地初始化资源:

Session

答案 1 :(得分:0)

  

其中一个要求是即使Cassandra群集不可用,应用程序也会启动

我认为您应该从Java驱动程序doc:http://datastax.github.io/java-driver/manual/#cluster-initialization

中读取此会话

除非执行某些调用,否则Cluster对象不会自动连接。

因为您正在使用Spring Data Cassandra(我不推荐,因为它的功能少于Java驱动程序的普通Mapper模块...)我不知道Cluster对象或{ {1}}对象直接暴露给用户......

对于重试,您可以将Session调用放在try / catch块中,如果群集仍然无法使用,您将根据文档捕获cluster.init()。在例外情况下,您可以安排稍后重试NoHostAvailableException