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

Add and remove Spring Boot health checks dynamically

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

我当然可以将所有作业的运行状况检查汇总到一个 HealthIndicator bean 中,但我更愿意以某种方式列出所有检查的运行状况。然而,HealthIndicator 只允许 return 一个 Health 实例。有没有办法 return 收集此类对象?

Spring Boot 2.1 为此引入了一个 HealthIndicatorRegistry。每当查询健康端点时,都会要求注册表提供所有已注册健康指标的快照,然后调用每个指标以确定应用程序的健康状况。

注册表以 bean 形式提供,因此可以注入到管理特定于域的任务的 class 中。然后它可以在添加和删除这些任务时调用 register(String, HealthIndicator)unregister(String)

自 Spring Boot 2.3 起,HealthIndicatorRegistry 已被弃用,取而代之的是 HealthContributorRegistry

可以使用registerContributor(String name,C contributor)注册,unregisterContributor(String name)删除,和之前的API非常相似。

从 2.1.0 开始可用