当前位置: 首页 > 知识库问答 >
问题:

HealthIndicator for Cassandra模板

屈博
2023-03-14

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

总的来说,检查Cassandratemplate健康状况的好策略是什么?

共有1个答案

翟元凯
2023-03-14

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执行的确切查询可能会根据您的需求而有所不同。上面使用的查询取自对一个关于对Cassandra执行健康检查的问题的回答。

 类似资料:
  • 主要内容:介绍,实现,Game.java,Cricket.java,Football.java,TemplatePatternDemo.java在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法

  • 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 何

  • 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 何

  • 模板模式 模板对于学习C++的同学,其实并不陌生。函数有模板函数,类也有模板类。那么这个模板模式是个什么情况?我们可以思考一下,模板的本质是什么。比如说,现在我们需要编写一个简单的比较模板函数。 template <typename type> int compare (type a, type b) { return a > b ? 1 : 0; } 模板函数提示我们,

  • 亦称: Template Method 意图 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 问题 假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式 (PDF、 DOC 或 CSV) 的文档, 程序则会试图从这些文件中抽取有意义的数据, 并以统一的格式将其返回给用户。 该程序的首个版本仅支持 DOC 文

  • 一、定义 模板方法是基于继承的设计模式,可以很好的提高系统的扩展性。 java中的抽象父类、子类 模板方法有两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。 二、示例 Coffee or Tea (1) 把水煮沸 (2) 用沸水浸泡茶叶 (3) 把茶水倒进杯子 (4) 加柠檬 /* 抽象父类:饮料 */ var Beverage = function(){}; // (1) 把水煮沸

  • 英文原文:http://emberjs.com/guides/application/the-application-template/ 应用模板是应用启动的时候默认渲染的模板。 你应该把你的header、footer和其他装饰性的内容放在应用模板里面。另外,应用模版中至少需要一个{{outlet}}占位符,以便路由能根据当前的URL将适当的模版渲染进来。 下面是一个应用模板的例子: 1 2 3

  • 问题 定义一个算法的结构,作为一系列的高层次的步骤,使每一个步骤的行为可以指定,使属于一个族的算法都具有相同的结构但是有不同的行为。 解决方案 使用模板方法( Template Method )在父类中描述算法的结构,再授权一个或多个具体子类来具体地进行实现。 例如,想象你希望模拟各种类型的文件的生成,并且每个文件要包含一个标题和正文。 class Document produceDocu