我正在构建一个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健康状况的好策略是什么?
答案 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开始可用