Cassandra模板的HealthIndicator

时间:2014-10-27 18:24:53

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

我正在构建一个Web服务,将数据从Cassandra公开到RESTful接口。此外,使用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健康状况的好策略是什么?

2 个答案:

答案 0 :(得分:1)

Spring Boot和Spring Data Cassandra都没有提供开箱即用的Cassandra HealthIndicator,但构建自己的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执行的查询确切地根据您的要求而有所不同。上面使用的查询是从this answer获取的有关对Cassandra执行健康检查的问题。

答案 1 :(得分:0)

CassandraHealthIndicator自Spring Boot 2.0开始可用