【发布时间】:2018-07-28 18:22:32
【问题描述】:
如何根据执行器的状态覆盖执行器的默认/健康响应状态代码:DOWN、UP、UNKNOWN so so?例如,如果健康状态为“UP”,则响应代码应为 200。如果 DOWN:400,未知 300。有什么办法可以实现吗?
注意:我不想要自己的健康端点。相反,需要覆盖现有的。
【问题讨论】:
-
您确定这是个好主意吗?从
/health得到 200 并不意味着服务是健康的,它只是意味着健康检查成功完成。对于响应的消费者来说,为了了解服务的健康状况(或其他方面),偷看它是标准做法。 -
如果你真的必须以 HTTP 状态码的形式传达服务的健康状况...
400表示BAD_REQUEST,那么“DOWN”(表示某物的状态)真的有意义吗?在 server) 中被视为“错误的客户端请求”?300在重定向分组中,这真的对应于“未知”吗?您如何表示健康检查本身的失败?换一种说法;在 UP/DOWN/UNKNOWN 和 HTTP 状态代码之间没有明确的、易于理解的映射,这是 /health 端点返回 200 并在其有效负载中提供详细信息的原因之一。 -
@glytching 。感谢您的回答。但是上面我的代码只是为了举例。可能是响应代码可以存在于 2XX 范围内。
-
我必须坚持使用响应代码的原因是我的应用程序要与另一个工具连接,并且它会 ping /health 端点。该工具将继续处理我的应用提供的响应代码。
-
@glytching 默认情况下一个 200 响应意味着该服务不知道是不健康的。如果已知它已关闭,它将返回 503。
标签: java spring-boot spring-boot-actuator