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

Spring启动执行器:缓存/执行器/健康/就绪和/执行器/健康/自定义健康检查结果

施昊然
2023-03-14

因此,我将Spring引导执行器添加到我的应用程序中,并在应用程序中指定。属性管理。endpoint。健康隐藏物生存时间=120秒,以缓存健康检查结果。因此,当我调用执行器/健康时,结果被缓存,效果很好。

当我调用执行器/健康/就绪或自定义创建的组时,问题开始出现。该请求结果不会被缓存。我查阅了Spring文档,只找到了主要健康终点的信息,没有找到特定人群的信息。

所以我的问题是:我错过了什么吗?或者我如何实现特定Spring引导执行器endpoint的缓存?

谢啦

共有1个答案

山疏珂
2023-03-14

所以我没有找到现成的解决方案,所以决定采用AOP方法。

我找到了管理健康restendpoint的类。这个类有两个健康方法,一个用于公共健康endpoint,另一个用于健康endpoint/

因此,我围绕第二种方法创建了Aspect,它允许我为需要的endpoint添加缓存。

@Around("execution(@org.springframework.boot.actuate.endpoint.annotation.ReadOperation * org.springframework.boot.actuate.health.HealthEndpointWebExtension.health(..,java.lang.String...))) && args(.., path)")
public Object cache(ProceedingJoinPoint joinPoint, String... path) throws Throwable {
    // Logic to get cache per endpoint and process if cache specifed.
}

在应用程序的最后。属性如下所示:

// out of the box
management.endpoint.health.cache.time-to-live=120s 

// customly created properties
management.endpoint.health.group.readiness.cache.time-to-live=60s
management.endpoint.health.group.deep.cache.time-to-live=120s
 类似资料:
  • 我需要改变频率来检查springboot执行器中的DB运行状况。默认DB运行状况检查查询每毫秒执行一次。我想让这个查询每1分钟后执行一次,而不是毫秒。有什么方法可以自定义它吗?

  • 我们已经在几个项目中使用了Spring Boot,现在我们使用的是最新版本1.2.3。我们正在合并执行器。到目前为止,一切都很顺利,只是我们发现/health指示器[default]显示服务已关闭。事实并非如此。这些服务是通过数据源实现的。它可以调用其他SOAP或Rest服务。卫生服务部门在看什么来衡量一项服务是否下降?

  • 我正在使用SpringBoot执行器返回应用程序的运行状况。 我看到了下面的回复 我想返回一个类似于下面的响应 有办法做到吗?

  • 对于我一直在开发的一个微服务,我创建了一个自定义健康检查类,扩展了AbstractHealthIndicator,并能够在中获得输出 但当我向领事注册服务时,健康检查状态为失败。 尝试将执行器url配置为领事健康检查为spring。云领事发现健康检查url=http://localhost:8080/actuator/health。但它仍然失败,出现错误http://localhost:8566/

  • {“Status”:“Down”} 我需要做什么才能显示自定义健康状况指示器?

  • 您可以将许多自定义运行状况指示器添加到Spring boot的执行器中,这非常棒,因为它们的总状态被认为是您的应用程序的运行状况。 有没有可能只查询其中一个指标呢? 对于一个复杂的应用程序,我有大约10个指示器来告诉我的应用程序总体运行状况,整个检查大约需要20秒。 有一些指标我想更频繁地点击,因为它们提供了对高吞吐量组件的快速响应。有可能以某种方式查询单个指标吗?