【问题标题】:Custom implementation of StatusAggregatorStatusAggregator 的自定义实现
【发布时间】:2020-07-20 18:38:31
【问题描述】:

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

【问题讨论】:

    标签: spring-boot spring-boot-actuator


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2014-10-14
      • 2011-06-04
      • 2010-10-29
      相关资源
      最近更新 更多