StatusAggregator 的自定义实现

Custom implementation of StatusAggregator

迁移到 Spring Boot 2.3.0 后,我需要创建 StatusAggregator 的自定义实现。 但是,我不知道在弃用 HealthAggregator 之后如何正确地执行此操作。我有几个外部系统,我检查它们的可用性,在以前的版本中我有方法 Health aggregate(Map<String, Health> healths) 但现在它是来自接口 StatusAggregator 的 Status getAggregateStatus(Set<Status> statuses) 作为参数它有一组状态。我需要识别来自系统 Status 对象的来源,因此在创建 Health 期间,我使用创建带有描述的 Status 的方法,如下所示: 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> 将 return 仅具有不同代码的状态。

我也想做类似的事情,但没有找到识别发送状态的组件的方法。我为每个 API 定义了自定义健康指标,并检查了这些个体健康指标中外部 API 的依赖性。对于自定义健康指标,在 HealthIndicator 中实现健康方法并使用 'component' 注释以在应用程序上下文中注册,如文档中所述。