spring-boot - 执行器运行状况返回“数据库关闭”时的日志
问题描述
如果 DB 已关闭,我们希望生成 CloudWatch 警报,因此我试图查看是否可以解析执行器/健康端点的响应,并在响应返回 DB down 时记录自定义错误代码。
我在 StackOverflow 上发现了一些类似的问题,但那里没有提供解决方案。
解决方案
如果其他人也想做同样的事情,我想在这里发布答案在进行了大量研究之后,我认为有两种方法可以做到这一点。
使用过滤器 - 使用 ContentCachingResponseWrapper 缓存响应,使用对象映射器读取响应,然后使用 contentCachingResponseWrapper.copyBodyToResponse() 重新填充响应。查看 spring-boot git 存储库问题,看起来做拦截器是可能的,但似乎 hacky 并且引导团队建议使用过滤器。
使用自定义健康指标 - 自动连接 ApplicationContext 并获取 Spring bean DataSourceHealthIndicator,然后在其上调用 health() 函数。
我有两种方法,但我继续使用#1,因为#2 将进行两次数据库健康检查。