当前位置: 首页 > 知识库问答 >
问题:

Spring引导执行器:有一个定制的状态为纯文本?

逄嘉木
2023-03-14

我正在尝试将Spring Boot Actutor与公司现有的基础设施集成起来。要做到这一点,我需要能够自定义状态消息。例如,如果应用程序正常运行,我需要从健康执行器endpoint返回一个200和一个“happy”的纯文本正文。

这样的自定义目前是可能的吗?由于Status类是final,所以我不能扩展它,但我认为这会起作用。

共有1个答案

陈德泽
2023-03-14

Spring Boot使用healthaggregator将各个健康指标中的所有状态聚合为整个应用程序的单个健康状态。您可以插入一个自定义聚合器,该聚合器委托启动的默认聚合器OrderedHealthAggregator,然后将UP映射到Happy:

@Bean
public HealthAggregator healthAggregator() {
    return new HappyHealthAggregator(new OrderedHealthAggregator());
}

static class HappyHealthAggregator implements HealthAggregator {

    private final HealthAggregator delegate;

    HappyHealthAggregator(HealthAggregator delegate) {
        this.delegate = delegate;
    }

    @Override
    public Health aggregate(Map<String, Health> healths) {
        Health result = this.delegate.aggregate(healths);
        if (result.getStatus() == Status.UP) {
            return new Health.Builder(new Status("HAPPY"), result.getDetails())
                    .build();
        }
        return result;
    }

}

如果您想完全控制响应的格式,那么您需要编写自己的MVCendpoint实现。您可以使用Spring Boot中现有的HealthMVCENdpoint类作为超级类,并覆盖其Invoke方法。

 类似资料:
  • 当我从Spring Boot应用程序访问/healthendpoint时,它返回的状态为UP: 但我想像这样定制我的状态: 如何自定义状态?

  • 我有一个使用Jedis配置redis集群的Spring Boot项目。配置文件如下: application.yml文件: redisclusterconfig.java文件: 有没有什么东西我可能会错过使/健康状态恢复到“上升”状态?谢谢! 更多信息:我跟踪了启动,发现RedisHealthIndicator通过了一个错误的工厂,Host=localhost和port=6379,这应该是配置的集

  • 我已经为Spring Boot执行器创建了示例项目,并进行了数据库测试。运行应用程序后,当我点击URL null {“status”:“down”,“diskspace”:{“status”:“up”,“total”:493767094272,“free”:404929720320,“threshold”:10485760},“mongo”:{“status”:“down”,“error”:“or

  • 但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo

  • 我注意到Spring Boot执行器只有在应用程序使用Spring MVC(DispatcherServlet)处理endpoint时才起作用。默认情况下,如果您在项目中添加了spring-boot-starter-web模块,则包含此servlet。 一旦这个servlet存在,类EndpointWebMvcAutoConfiguration将定制Spring MVC,以支持endpoint和其