我将 Spring Boot 和 Spring Data 与 Cassandra 一起使用。在应用程序启动时,spring 建立到数据库的连接以设置模式并初始化 spring 数据存储库。如果数据库不可用,应用程序将不会启动。
我希望应用程序只记录一个错误并启动。当然,我不能再使用存储库,但其他独立于数据库的服务(其余控制器等)应该可以工作。也很高兴在执行器健康检查中看到 cassandra 已关闭。
对于 JDBC,有一个spring.datasource.continue-on-error属性。我找不到与 Cassandra 类似的东西。
我还尝试创建自定义 cassandra 配置并尝试在 CqlSession 创建时捕获异常,但我无法实现所需的行为。
编辑:正如@adutra 所建议的,我尝试设置advanced.reconnect-on-init,应用程序尝试建立连接,但应用程序未完全初始化(例如无法访问 REST 控制器)
@Configuration
public class CustomCassandraConfiguration extends CassandraAutoConfiguration {
@Bean
public DriverConfigLoaderBuilderCustomizer driverConfigLoaderBuilderCustomizer() {
return builder -> builder.withBoolean(DefaultDriverOption.RECONNECT_ON_INIT, true);
}
}
Run Code Online (Sandbox Code Playgroud)
EDIT2:我现在有工作示例(应用程序启动,cassandra 的自定义健康检查),但如果感觉很丑陋:
自定义Cassandra自动配置
@Configuration
public class CustomCassandraConfiguration extends CassandraAutoConfiguration {
@Bean
public DriverConfigLoaderBuilderCustomizer driverConfigLoaderBuilderCustomizer() {
return builder -> builder.withBoolean(DefaultDriverOption.RECONNECT_ON_INIT, true);
}
}
Run Code Online (Sandbox Code Playgroud)
自定义CassandraDataAutoConfiguration
@Configuration
public class CustomCassandraAutoConfiguration extends CassandraAutoConfiguration …Run Code Online (Sandbox Code Playgroud)spring cassandra spring-data spring-boot spring-data-cassandra