StatusAggregator的自定义实现

时间:2020-07-20 18:38:31

标签: spring-boot spring-boot-actuator

迁移到Spring Boot 2.3.0之后,我需要创建一个StatusAggregator的自定义实现。 但是,不赞成在不推荐使用HealthAggregator之后正确地执行此操作。我有几个外部系统,我检查了它们的可用性,在以前的版本中,我有方法Health aggregate(Map<String, Health> healths),但是现在它是来自StatusAggregator接口的Status getAggregateStatus(Set<Status> statuses),其中有一个状态集。我需要从系统状态对象中识别出来,因此在创建运行状况期间,我会使用创建带有说明的状态的方法,如下所示: Health.status(new Status((Status.DOWN.getCode(), "TEST_SYSTEM")).build()) 然后我想通过此描述在方法Status getAggregateStatus(Set<Status> statuses)中识别它,但是当我转到Status.class并检查是否等于它时,不包括描述字段。

public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        } else {
            return obj instanceof Status ? ObjectUtils.nullSafeEquals(this.code, ((Status)obj).code) : false;
        }
    }

所以Set<Status>将仅返回具有不同代码的状态。

1 个答案:

答案 0 :(得分:2)

我还试图做类似的事情,但没有找到一种方法来识别发送状态的组件。我为每个API定义了自定义健康指标,并检查了这些单独的健康指标中外部API的依赖性。对于自定义运行状况指示器,请在HealthIndicator中实现运行状况方法,并使用“组件”注释以按照文档中的说明在应用程序上下文中注册。