[ https://issues.apache.org/jira/browse/CAMEL-10026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16131962#comment-16131962 ]
Luca Burgazzoli commented on CAMEL-10026: ----------------------------------------- What do you think about the following basic definition ? {code:java} /** * The health check. */ interface HealtCheck extends HasId, Callable<HealtCheck.Response> { /** * Response to an health check invocation. */ interface Response extends HasId { enum State { UP, DOWN } /** * The state of the service. */ State getState(); /** * A message associated to the result, tipically used to provide more * information for unhealty services. */ default Optional<String> getMessage() { return Optional.empty(); } /** * An error associated to the result, tipically used for unhealty services. */ default Optional<Throwable> getError() { return Optional.empty(); } /** * An optional key/value combination fo attrinutes. Tt can be used to * store the component name, the endpoint id, etc. */ Map<String, Object> getAttributes(); } } /** * A builder for {@link HealtCheck.Response} */ class ResponseBuilder implements Builder<HealtCheck.Response>{ public HealtCheck.Response build() { ... } public static ResponseBuilder named(String id) { ... } } /** * A registry for health checks. */ interface HealthCheckRegistry { /** * Registers a service {@link HealthCheck}. */ void register(HealtCheck check); /** * Unregisters a service {@link HealthCheck}. */ void unregister(HealtCheck check); /** * Returns the IDs of all registered health checks. */ Colelction<String> getCheckIDs(); /** * Runs the health check with the given ID. */ HealtCheck.Response runCheck(String id); /** * Runs the registered health checks. */ Collection<HealtCheck.Response> runChecks(); } interface CamelContext { /** * Returns an optional HealthCheckRegistry, by default no registry is present * and it must be explicit activated. Components can register/unregister healt * checks in response to life-cycle events (i.e. start/stop). * * This registry is not used by the camel context but it is up to the impl to * properly use it, i.e. * * - a RouteController could use the registry to decide to restart a route * with failing healt checks * - spring boot could integrate such checks within its healt endpoint or * make it available only as separate endpoint. * * As this new method in maked as default it should not introduce API breaks * so it should be safe to introduce it in 2.20.x. */ default Optional<HealthCheckRegistry> getHealthCheckRegistry() { return Optional.empty(); } boolean isHealthCheckEnabled(); void setHealthCheckEnabled(); } {code} > HealthCheck API > --------------- > > Key: CAMEL-10026 > URL: https://issues.apache.org/jira/browse/CAMEL-10026 > Project: Camel > Issue Type: New Feature > Components: camel-core > Reporter: Claus Ibsen > Fix For: 2.20.0 > > > Add a health check API to camel-core so this API can be queried from Java / > JMX / spring-boot etc. so users can easily get a health check. This can be > used for liveness/readiness checks for their Camel apps. > The API should allow optional support for components to implement custom > logic for health check. So a FTP component can connect to a FTP server and do > a FTP list etc. A JDBC component does a SQL query, and so on. -- This message was sent by Atlassian JIRA (v6.4.14#64029)