动态添加和删除Spring Boot健康检查

10

我正在开发一个基于 Spring Boot 的应用程序,通过 API 动态添加和删除特定领域的任务。由于这些作业可能会单独失败,因此我想在它们运行时为每个作业添加HealthIndicator并在之后将其删除。
Spring Actuator 的“health”端点已经集成到了多个监视器中,这只是将此信息向下推送。

当然,我可以将所有作业的健康检查聚合为一个 HealthIndicator bean,但我更喜欢以某种方式列出所有检查的健康状况。然而,HealthIndicator 仅允许返回单个 Health 实例。是否有一种方法可以返回这样的对象集合?

2个回答

13

Spring Boot 2.1引入了HealthIndicatorRegistry,用于此目的。每当查询健康端点时,将询问注册表以获取所有已注册健康指标的快照,然后调用每个指标以确定应用程序的健康状况。

这个注册表可作为bean使用,因此可以将其注入到管理特定领域任务的类中。它可以在添加和删除这些任务时调用register(String, HealthIndicator)unregister(String)方法。


2
自 Spring Boot 2.3 开始,HealthIndicatorRegistry 已被弃用,建议使用 HealthContributorRegistry
您可以使用 registerContributor(String name,C contributor) 来注册,使用 unregisterContributor(String name) 来删除,这与之前的 API 相似。
此功能从 2.1.0 版本开始可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接