迁移到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>
将仅返回具有不同代码的状态。
答案 0 :(得分:2)
我还试图做类似的事情,但没有找到一种方法来识别发送状态的组件。我为每个API定义了自定义健康指标,并检查了这些单独的健康指标中外部API的依赖性。对于自定义运行状况指示器,请在HealthIndicator中实现运行状况方法,并使用“组件”注释以按照文档中的说明在应用程序上下文中注册。