【问题标题】:Add and remove Spring Boot health checks dynamically动态添加和删除 Spring Boot 健康检查
【发布时间】:2019-04-29 15:42:05
【问题描述】:
我正在开发一个基于 Spring Boot 的应用程序,其中特定于域的任务通过 API 动态添加和删除。由于这些作业可能会单独失败,我想在它们运行时为每个作业添加HealthIndicators,然后将它们删除。 Spring Actuator 的 health 端点已集成到多个监视器中,这只会将此信息推送到下游。
我当然可以将所有作业的运行状况检查汇总到一个 HealthIndicator bean 中,但我更希望以某种方式列出所有检查的运行状况。但是,HealthIndicator 只允许返回单个 Health 实例。有没有办法返回这些对象的集合?
【问题讨论】:
标签:
java
spring
spring-boot
spring-boot-actuator
health-monitoring
【解决方案1】:
自 Spring Boot 2.3 起,HealthIndicatorRegistry 已被弃用,取而代之的是 HealthContributorRegistry。
您可以使用registerContributor(String name,C contributor) 注册和unregisterContributor(String name) 删除,这与之前的API 非常相似。
从 2.1.0 开始就可以使用了
【解决方案2】:
Spring Boot 2.1 为此引入了HealthIndicatorRegistry。每当查询健康端点时,都会要求注册表提供所有已注册健康指标的快照,然后调用这些指标中的每一个来确定应用程序的健康状况。
注册表作为 bean 提供,因此可以注入到管理特定领域任务的类中。然后它可以在添加和删除这些任务时调用register(String, HealthIndicator) 和unregister(String)。