camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roland Huss (JIRA)" <>
Subject [jira] [Commented] (CAMEL-10795) PingCheck API
Date Fri, 17 Feb 2017 11:09:41 GMT


Roland Huss commented on CAMEL-10795:

I think, too, that one specific check a time with a single result makes sense.

Think it make sense to use delegated object for the validation / check. 

w.r.t to naming, maybe its better to use a not-so-specific name like {{Validator}} (for me
I always associated validation of configuration, however this is a bit more like checking
also connections). Maybe {{Checker}}, {{Verifier}} or {{Tester}} ?

So maybe something along the lines 


interface Verifier {

     // actual action
    verify(Map<String, String> options);
    enum Scope {
      // only check connectivity, if make sense for the component
      // only check parameters correctness

   enum Status {

   interface Result {

    Status getStatus();
    Scope getScope();

    // Still to think about generic meta data ...
    Map<String, String> getErrorDetails();
    Map<String, String> getParameterErrors();

interface Component {
   Verifier getVerifier(Verifier.Scope scope)

> PingCheck API
> -------------
>                 Key: CAMEL-10795
>                 URL:
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>            Reporter: Claus Ibsen
>             Fix For: 2.19.0
> Related to CAMEL-10026 about Health Check API
> We need some way for Camel components to be able to more easily validate if they can
connect to their remote system.
> And for that the user must configure the Camel component/endpoint accordingly with details
such as username/password/tokens/ other beans etc.
> How this is done varies from Camel component to component, but most of them uses endpoint
> So we may want to introduce some interface (whether the name Pingable is a good name
is up for discussion)
> {code}
> interface Pingable {
>     PingResult ping(Map<String, String> config);
>     boolean canPing(Map<String, String> config);
> }
> class PingResult {
>  private boolean isSuccess();
>  private String errorMessage();
> }
> {code}
> This API is just a little suggestion.
> The parameters should ideally be type less, eg Map<String, String> as the user
configures this in endpoint uris, XML DSL etc. and therefore we should be able to do this
without having to use Java code per see.
> Also we may want to have canPing as a method to check if the component can accept the
ping or not. In some cases it may not be able to do the ping.
> For example camel-http component would just require the following information in the
Map<String, String>
> httpUri=http://myserver/foo/bar
> Where httpUri is the name of the option accordingly to the table at
> And then it depends on each Camel component how they do the ping check, the http component
may do a HTTP HEAD or a HTTP GET etc and check the HTTP response code etc.
> Notice this is not intended entirely for runtime health check, but for validating/testing
Camel components can work with the user given configuration to connect to the remote system.

This message was sent by Atlassian JIRA

View raw message