【发布时间】: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