Health Checks¶
Create default Health Check¶
The functional interface HealthCheck together with the annotations @Liveness and @Readiness are the key concepts to bring up a new
health check. Following code snipping shows a very basic example on how to use the interface. The parameter isDefault
with value true makes sure that this health check is covered during server startup (see section Settings in administration guide) and exposed to /health.
@Liveness(isDefault = true)
public class SampleHealthCheck implements HealthCheck{
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("sample-default")
.state(true)
.withData("key", "value")
.build();
}
}
Important
Make sure to use @Liveness and @Readiness from package io.ox.proxy.health.impl otherwise health checks could not be registered.
Create custom Health Check Endpoint¶
To create a health check which should not be exposed via /health /health/live or /health/ready change health check´s default to false, create a new resource class with proper @PATH annotation and send health check´s response back to caller.
- Custom Health Check:
@Liveness(isDefault = false) public class SampleHealthCheck implements HealthCheck{ @Override public HealthCheckResponse call() { return HealthCheckResponse.named("sample-custom") .state(true) .withData("key", "value") .build(); } }
- Custom Endpoint:
@Path("/custom") public class SampleResource { @Path("/sample") @GET @Produces(MediaType.APPLICATION_JSON) public Response getCallHealthCheck() { // The Health Check to call return Response.ok().entity(new SampleHealthCheck().call()).build(); } }
Important
The SampleHealthCheck class can be placed in a package of your choise but make sure to place SampleResource in package io.ox.proxy.jersey.resource otherwise this resource could not be bind to JAX-RS context.