0

我正在构建一个将数据从 Cassandra 公开到 RESTful 接口的 Web 服务。此外,将 Spring-boot-web 用于 REST 服务部分,将 spring-boot-actuator 用于生产就绪功能,将 Spring-data-cassandra 用于 Cassandra 接口。我正在为 CassandraTemplate 寻找我可以的自定义 HealthIndicator ( http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html#production-ready-health )插入。

我没有从 Spring-data-cassandra 文档中找到任何内容。我们有没有开发不足的地方?

更一般地说,检查 CassandraTemplate 的健康状况的好策略是什么?

4

2 回答 2

1

Spring Boot 和 Spring Data Cassandra 都没有为 Cassandra 提供开箱即用的 HealthIndicator,但构建你自己的很简单。您只需要创建一个与 Cassandra 交互的新 HealthIndicator bean。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health.Builder;
import org.springframework.dao.DataAccessException;
import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.stereotype.Component;

@Component
public class CassandraHealthIndicator extends AbstractHealthIndicator {

    private final CassandraOperations cassandra;

    @Autowired
    public CassandraHealthIndicator(CassandraOperations cassandra) {
        this.cassandra = cassandra;
    }

    @Override
    protected void doHealthCheck(Builder builder) throws Exception {
        try {
            this.cassandra.execute("SELECT now() FROM system.local");
            builder.up().build();
        } catch (DataAccessException ex) {
            builder.down(ex).build();
        }
    }

}

只要此 bean 存在于您的应用程序上下文中,Spring Boot 的 Actuator 组件就会在确定应用程序的健康状况时找到并使用它。

您对 Cassandra 执行的确切查询可能因您的要求而异。上面使用的查询取自这个关于在 Cassandra 上执行健康检查的问题的答案。

于 2014-10-28T09:15:36.120 回答
1

CassandraHealthIndicator 从 Spring Boot 2.0 开始可用

于 2018-07-18T18:13:26.320 回答