可以将 HealthIndicator 方法作为端点访问吗?
Possible to access HealthIndicator methods as endpoints?
通过实施 HealthIndicator
,您可以使用 Spring Boot 及其执行器模块添加自定义健康检查。
这些检查使用 /health
端点一起列出。
是否可以请求这些自定义健康端点,例如 /health/myCustomCheck
?
简短的回答是否定的。这不是由执行器提供的。您可以通过调用 /mappings 端点并查看是否仅映射 /health 来验证这一点。
现在长话短说,您可以添加自己的端点来调用您的自定义运行状况指示器。这并不难做到。 Spring 将为您挑选任何 Endpoint 类型的 beans 并映射它们。一个粗略的例子是这样的
@Bean
public Endpoint<Object> customHealthEndpoint(final MyHealthCheck health) {
return new Endpoint<Object>() {
@Override
public String getId() {
return "myHealthCheck";
}
@Override
public Object invoke() {
return health.health().getStatus();
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return false;
}
};
}
然后您可以致电 /myHealthCheck 并返回 {"status":"UP"}。
通过实施 HealthIndicator
,您可以使用 Spring Boot 及其执行器模块添加自定义健康检查。
这些检查使用 /health
端点一起列出。
是否可以请求这些自定义健康端点,例如 /health/myCustomCheck
?
简短的回答是否定的。这不是由执行器提供的。您可以通过调用 /mappings 端点并查看是否仅映射 /health 来验证这一点。
现在长话短说,您可以添加自己的端点来调用您的自定义运行状况指示器。这并不难做到。 Spring 将为您挑选任何 Endpoint 类型的 beans 并映射它们。一个粗略的例子是这样的
@Bean
public Endpoint<Object> customHealthEndpoint(final MyHealthCheck health) {
return new Endpoint<Object>() {
@Override
public String getId() {
return "myHealthCheck";
}
@Override
public Object invoke() {
return health.health().getStatus();
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return false;
}
};
}
然后您可以致电 /myHealthCheck 并返回 {"status":"UP"}。