Cassandra 集群恢复

标签 cassandra spring-boot spring-data-cassandra

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

谢谢

最佳答案

如果 Apache Cassandra 不可用,则可以启动 Spring Boot 应用程序,但您需要定义 SessionCassandraTemplate自己用 bean @Lazy 。这些 bean 开箱即用 CassandraAutoConfiguration但会急切地初始化(默认行为),这会创建 SessionSession需要连接到 Cassandra,如果未延迟初始化,这将阻止启动。

以下代码将延迟初始化资源:

@Configuration
public class MyCassandraConfiguration {

    @Bean
    @Lazy
    public CassandraTemplate cassandraTemplate(@Lazy Session session, CassandraConverter converter) throws Exception {
        return new CassandraTemplate(session, converter);
    }

    @Bean
    @Lazy
    public Session session(CassandraConverter converter, Cluster cluster,
            CassandraProperties cassandraProperties) throws Exception {
        CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
        session.setCluster(cluster);
        session.setConverter(converter);
        session.setKeyspaceName(cassandraProperties.getKeyspaceName());
        session.setSchemaAction(SchemaAction.NONE);
        return session.getObject();
    }
}

关于Cassandra 集群恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800523/

相关文章:

java - Spring Boot 不记录 CQL 查询

scala - 从 Scala 中的数组中删除方括号 []

java - Nutch - 尝试爬行时出现错误 : JAVA_HOME is not set.

java - Spring MVC 将 406 返回到 Controller 测试

java - 如何修改json响应?

java - Spring Data Cassandra 执行的日志查询

java - 上下文初始化期间遇到异常 - 取消刷新尝试 : org. springframework.beans.factory.UnsatisfiedDependencyException

python - cqlsh 5.0.1 在 cassandra 3.11.2 版本中被破坏了吗?

java - spring框架动态日志记录

java - Spring Data Cassandra - 检索受影响的行