spring-boot - StatusAggregator 的自定义实现
问题描述
迁移到 Spring Boot 2.3.0 后,我需要创建 StatusAggregator 的自定义实现。但是,在不推荐使用 HealthAggregator 之后,我不知道如何正确执行此操作。我有几个外部系统,我检查了它们的可用性,在以前的版本中我有方法Health aggregate(Map<String, Health> healths)
,但现在它Status getAggregateStatus(Set<Status> statuses)
来自接口 StatusAggregator,其中作为参数它有一组状态。我需要从系统状态对象中识别出来,所以在创建健康期间,我使用我创建带有描述的状态的方法,如下所示:
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>
只会返回具有不同代码的状态。
解决方案
我也想做类似的事情,但没有找到一种方法来识别发送状态的组件。我为每个 API 定义了自定义健康指标,并检查了这些单独健康指标中外部 API 的依赖关系。对于自定义健康指标,在 HealthIndicator 中实现健康方法并使用“组件”注释以在应用程序上下文中注册,如文档中所述。
推荐阅读
- clojure-java-interop - 使用 leiningen 将 Clojure 和 Java(springboot) 源代码打包成 JAR 文件
- mongodb - MongoDB 的 findOneAndUpdate 删除数据,无论 $set on pre hook
- android - OTP oncodesend 函数未调用 onVerificationCompleted 在某些设备中调用
- powershell - 重写错误消息 - 为什么在远程会话中运行 PS5.1 代码时会产生不同的 $psitem 结果?
- multithreading - 多线程文件预览 (Lazarus + WinAPI)
- javascript - 在 React 项目中打开静态 HTML
- excel - 日期“DD”在该日期不返回“0”
- r - 如何将分离的列值映射到一个新列?
- python - PyTorch RuntimeError:尝试第二次向后遍历图形,但保存的中间结果已被释放
- c# - 在 SQL Server 中存储计算表达式并在 C# 中对其进行评估?