You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/12/10 16:06:36 UTC

[camel] branch master updated: CAMEL-14284: Configuring endpoint should set properties on endpoint and not configuration object - Consul component

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new d4b69ca  CAMEL-14284: Configuring endpoint should set properties on endpoint and not configuration object - Consul component
d4b69ca is described below

commit d4b69caffcbd9e31dc072cba1795c0d88fc56721
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 10 17:06:11 2019 +0100

    CAMEL-14284: Configuring endpoint should set properties on endpoint and not configuration object - Consul component
---
 .../src/main/docs/consul-component.adoc            |   23 +-
 .../consul/ConsulClientConfiguration.java          |    2 +-
 .../camel/component/consul/ConsulComponent.java    |  105 +-
 .../camel/component/consul/ConsulEndpoint.java     |    4 +-
 .../consul/endpoint/ConsulCatalogProducer.java     |    1 -
 .../endpoint/dsl/ConsulEndpointBuilderFactory.java | 1186 ++++++++++++++++++--
 .../springboot/ConsulComponentConfiguration.java   |   10 +-
 7 files changed, 1186 insertions(+), 145 deletions(-)

diff --git a/components/camel-consul/src/main/docs/consul-component.adoc b/components/camel-consul/src/main/docs/consul-component.adoc
index cb751d5..86259fb 100644
--- a/components/camel-consul/src/main/docs/consul-component.adoc
+++ b/components/camel-consul/src/main/docs/consul-component.adoc
@@ -85,18 +85,39 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (6 parameters):
+=== Query Parameters (27 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *connectTimeoutMillis* (common) | Connect timeout for OkHttpClient |  | Long
+| *consulClient* (common) | Reference to a com.orbitz.consul.Consul in the registry. |  | Consul
+| *key* (common) | The default key. Can be overridden by CamelConsulKey |  | String
+| *pingInstance* (common) | Configure if the AgentClient should attempt a ping before returning the Consul instance | true | boolean
+| *readTimeoutMillis* (common) | Read timeout for OkHttpClient |  | Long
+| *tags* (common) | Set tags. You can separate multiple tags by comma. |  | String
+| *url* (common) | The Consul agent URL |  | String
+| *writeTimeoutMillis* (common) | Write timeout for OkHttpClient |  | Long
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| *action* (producer) | The default action. Can be overridden by CamelConsulAction |  | String
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *valueAsString* (producer) | Default to transform values retrieved from Consul i.e. on KV endpoint to string. | false | boolean
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
+| *consistencyMode* (advanced) | The consistencyMode used for queries, default ConsistencyMode.DEFAULT | DEFAULT | ConsistencyMode
+| *datacenter* (advanced) | The data center |  | String
+| *nearNode* (advanced) | The near node to use for queries. |  | String
+| *nodeMeta* (advanced) | The note meta-data to use for queries. |  | List
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *blockSeconds* (watch) | The second to wait for a watch event, default 10 seconds | 10 | Integer
+| *firstIndex* (watch) | The first index for watch for, default 0 | 0 | BigInteger
+| *recursive* (watch) | Recursively watch, default false | false | boolean
+| *aclToken* (security) | Sets the ACL token to be used with Consul |  | String
+| *password* (security) | Sets the password to be used for basic authentication |  | String
+| *sslContextParameters* (security) | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. |  | SSLContextParameters
+| *userName* (security) | Sets the username to be used for basic authentication |  | String
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulClientConfiguration.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulClientConfiguration.java
index 0c8b670..a26f2c6 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulClientConfiguration.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulClientConfiguration.java
@@ -32,7 +32,7 @@ import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.ObjectHelper;
 
 @UriParams
-public class ConsulClientConfiguration implements Cloneable {
+public abstract class ConsulClientConfiguration implements Cloneable {
     @UriParam
     private String url;
     @UriParam(label = "advanced")
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
index 3509bba..e064cbf 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
@@ -38,9 +38,6 @@ import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.jsse.SSLContextParameters;
 
-/**
- * Represents the component that manages {@link ConsulEndpoint}.
- */
 @Component("consul")
 public class ConsulComponent extends DefaultComponent implements SSLContextParametersAware {
 
@@ -91,7 +88,6 @@ public class ConsulComponent extends DefaultComponent implements SSLContextParam
     /**
      * SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters
      * instance.
-     * @param sslContextParameters
      */
     public void setSslContextParameters(SSLContextParameters sslContextParameters) {
         configuration.setSslContextParameters(sslContextParameters);
@@ -116,7 +112,6 @@ public class ConsulComponent extends DefaultComponent implements SSLContextParam
 
     /**
      * Sets the ACL token to be used with Consul
-     * @param aclToken
      */
     public void setAclToken(String aclToken) {
         configuration.setAclToken(aclToken);
@@ -128,7 +123,6 @@ public class ConsulComponent extends DefaultComponent implements SSLContextParam
 
     /**
      * Sets the username to be used for basic authentication
-     * @param userName
      */
     public void setUserName(String userName) {
         configuration.setUserName(userName);
@@ -140,7 +134,6 @@ public class ConsulComponent extends DefaultComponent implements SSLContextParam
 
     /**
      * Sets the password to be used for basic authentication
-     * @param password
      */
     public void setPassword(String password) {
         configuration.setPassword(password);
@@ -157,57 +150,67 @@ public class ConsulComponent extends DefaultComponent implements SSLContextParam
         this.configuration = configuration;
     }
 
-
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         ConsulConfiguration configuration = Optional.ofNullable(this.configuration).orElseGet(ConsulConfiguration::new).copy();
 
+        ConsulEndpoint endpoint = null;
+        switch (remaining) {
+            case "kv":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulKeyValueProducer::new), Optional.of(ConsulKeyValueConsumer::new)
+                );
+                break;
+            case "event":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulEventProducer::new), Optional.of(ConsulEventConsumer::new)
+                );
+                break;
+            case "agent":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulAgentProducer::new), Optional.empty()
+                );
+                break;
+            case "coordinates":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulCoordinatesProducer::new), Optional.empty()
+                );
+                break;
+            case "health":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulHealthProducer::new), Optional.empty()
+                );
+                break;
+            case "status":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulStatusProducer::new), Optional.empty()
+                );
+                break;
+            case "preparedQuery":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulPreparedQueryProducer::new), Optional.empty()
+                );
+                break;
+            case "catalog":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulCatalogProducer::new), Optional.empty()
+                );
+                break;
+            case "session":
+                endpoint = new ConsulEndpoint(
+                        remaining, uri, this, configuration, Optional.of(ConsulSessionProducer::new), Optional.empty()
+                );
+        }
+        if (endpoint == null) {
+            throw new IllegalArgumentException("Unknown operation " + remaining);
+        }
+
+        setProperties(endpoint, parameters);
         // using global ssl context parameters if set
         if (configuration.getSslContextParameters() == null) {
             configuration.setSslContextParameters(retrieveGlobalSslContextParameters());
         }
-
-        setProperties(configuration, parameters);
-
-        switch (remaining) {
-        case "kv":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulKeyValueProducer::new), Optional.of(ConsulKeyValueConsumer::new)
-            );
-        case "event":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulEventProducer::new), Optional.of(ConsulEventConsumer::new)
-            );
-        case "agent":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulAgentProducer::new), Optional.empty()
-            );
-        case "coordinates":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulCoordinatesProducer::new), Optional.empty()
-            );
-        case "health":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulHealthProducer::new), Optional.empty()
-            );
-        case "status":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulStatusProducer::new), Optional.empty()
-            );
-        case "preparedQuery":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulPreparedQueryProducer::new), Optional.empty()
-            );
-        case "catalog":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulCatalogProducer::new), Optional.empty()
-            );
-        case "session":
-            return new ConsulEndpoint(
-                remaining, uri, this, configuration, Optional.of(ConsulSessionProducer::new), Optional.empty()
-            );
-        default:
-            throw new IllegalArgumentException("Unknown apiEndpoint: " + remaining);
-        }
+        return endpoint;
     }
+
 }
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulEndpoint.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulEndpoint.java
index 7155b31..48b00c8 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulEndpoint.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulEndpoint.java
@@ -24,6 +24,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.ObjectHelper;
@@ -34,8 +35,7 @@ import org.apache.camel.util.ObjectHelper;
 @UriEndpoint(firstVersion = "2.18.0", scheme = "consul", title = "Consul", syntax = "consul:apiEndpoint", label = "api,cloud")
 public class ConsulEndpoint extends DefaultEndpoint {
 
-    // @UriParam(description = "The consul configuration")
-    // @Metadata
+    @UriParam
     private final ConsulConfiguration configuration;
 
     @UriPath(description = "The API endpoint")
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/endpoint/ConsulCatalogProducer.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/endpoint/ConsulCatalogProducer.java
index 3928a9f..2f92e20 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/endpoint/ConsulCatalogProducer.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/endpoint/ConsulCatalogProducer.java
@@ -34,7 +34,6 @@ public final class ConsulCatalogProducer extends AbstractConsulProducer<CatalogC
 
     @InvokeOnHeader(ConsulCatalogActions.REGISTER)
     protected void register(Message message) throws Exception {
-
         getClient().register(message.getMandatoryBody(CatalogRegistration.class));
         setBodyAndResult(message, null);
     }
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/ConsulEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/ConsulEndpointBuilderFactory.java
index ec68174..9eb7f31 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/ConsulEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/ConsulEndpointBuilderFactory.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.builder.endpoint.dsl;
 
+import java.math.BigInteger;
+import java.util.List;
+import java.util.Set;
 import javax.annotation.Generated;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.EndpointConsumerBuilder;
@@ -44,6 +47,171 @@ public interface ConsulEndpointBuilderFactory {
             return (AdvancedConsulEndpointConsumerBuilder) this;
         }
         /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder connectTimeoutMillis(
+                Long connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder connectTimeoutMillis(
+                String connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option is a: <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder consulClient(Object consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option will be converted to a
+         * <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder consulClient(String consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * The default key. Can be overridden by CamelConsulKey.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder key(String key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder pingInstance(boolean pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder pingInstance(String pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder readTimeoutMillis(
+                Long readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder readTimeoutMillis(
+                String readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option is a: <code>java.util.Set&lt;java.lang.String&gt;</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder tags(Set<String> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option will be converted to a
+         * <code>java.util.Set&lt;java.lang.String&gt;</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The Consul agent URL.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder url(String url) {
+            doSetProperty("url", url);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder writeTimeoutMillis(
+                Long writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointConsumerBuilder writeTimeoutMillis(
+                String writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
          * Allows for bridging the consumer to the Camel routing Error Handler,
          * which mean any exceptions occurred while the consumer is trying to
          * pickup incoming messages, or the likes, will now be processed as a
@@ -79,6 +247,135 @@ public interface ConsulEndpointBuilderFactory {
             doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
             return this;
         }
+        /**
+         * The second to wait for a watch event, default 10 seconds.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder blockSeconds(Integer blockSeconds) {
+            doSetProperty("blockSeconds", blockSeconds);
+            return this;
+        }
+        /**
+         * The second to wait for a watch event, default 10 seconds.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder blockSeconds(String blockSeconds) {
+            doSetProperty("blockSeconds", blockSeconds);
+            return this;
+        }
+        /**
+         * The first index for watch for, default 0.
+         * 
+         * The option is a: <code>java.math.BigInteger</code> type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder firstIndex(BigInteger firstIndex) {
+            doSetProperty("firstIndex", firstIndex);
+            return this;
+        }
+        /**
+         * The first index for watch for, default 0.
+         * 
+         * The option will be converted to a <code>java.math.BigInteger</code>
+         * type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder firstIndex(String firstIndex) {
+            doSetProperty("firstIndex", firstIndex);
+            return this;
+        }
+        /**
+         * Recursively watch, default false.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder recursive(boolean recursive) {
+            doSetProperty("recursive", recursive);
+            return this;
+        }
+        /**
+         * Recursively watch, default false.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: watch
+         */
+        default ConsulEndpointConsumerBuilder recursive(String recursive) {
+            doSetProperty("recursive", recursive);
+            return this;
+        }
+        /**
+         * Sets the ACL token to be used with Consul.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointConsumerBuilder aclToken(String aclToken) {
+            doSetProperty("aclToken", aclToken);
+            return this;
+        }
+        /**
+         * Sets the password to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointConsumerBuilder password(String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointConsumerBuilder sslContextParameters(
+                Object sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointConsumerBuilder sslContextParameters(
+                String sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * Sets the username to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointConsumerBuilder userName(String userName) {
+            doSetProperty("userName", userName);
+            return this;
+        }
     }
 
     /**
@@ -174,117 +471,79 @@ public interface ConsulEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
          * 
-         * The option is a: <code>boolean</code> type.
+         * The option is a:
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointConsumerBuilder synchronous(
-                boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default AdvancedConsulEndpointConsumerBuilder consistencyMode(
+                ConsistencyMode consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
          * 
-         * The option will be converted to a <code>boolean</code> type.
+         * The option will be converted to a
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointConsumerBuilder synchronous(
-                String synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default AdvancedConsulEndpointConsumerBuilder consistencyMode(
+                String consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
             return this;
         }
-    }
-
-    /**
-     * Builder for endpoint producers for the Consul component.
-     */
-    public interface ConsulEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedConsulEndpointProducerBuilder advanced() {
-            return (AdvancedConsulEndpointProducerBuilder) this;
-        }
         /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
+         * The data center.
          * 
-         * The option is a: <code>boolean</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
-         * Group: producer
+         * Group: advanced
          */
-        default ConsulEndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
+        default AdvancedConsulEndpointConsumerBuilder datacenter(
+                String datacenter) {
+            doSetProperty("datacenter", datacenter);
             return this;
         }
         /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
+         * The near node to use for queries.
          * 
-         * The option will be converted to a <code>boolean</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
-         * Group: producer
+         * Group: advanced
          */
-        default ConsulEndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
+        default AdvancedConsulEndpointConsumerBuilder nearNode(String nearNode) {
+            doSetProperty("nearNode", nearNode);
             return this;
         }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the Consul component.
-     */
-    public interface AdvancedConsulEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default ConsulEndpointProducerBuilder basic() {
-            return (ConsulEndpointProducerBuilder) this;
-        }
         /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
+         * The note meta-data to use for queries.
          * 
-         * The option is a: <code>boolean</code> type.
+         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
+         * type.
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointProducerBuilder basicPropertyBinding(
-                boolean basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+        default AdvancedConsulEndpointConsumerBuilder nodeMeta(
+                List<String> nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
             return this;
         }
         /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
+         * The note meta-data to use for queries.
          * 
-         * The option will be converted to a <code>boolean</code> type.
+         * The option will be converted to a
+         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointProducerBuilder basicPropertyBinding(
-                String basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+        default AdvancedConsulEndpointConsumerBuilder nodeMeta(String nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
             return this;
         }
         /**
@@ -295,7 +554,7 @@ public interface ConsulEndpointBuilderFactory {
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointProducerBuilder synchronous(
+        default AdvancedConsulEndpointConsumerBuilder synchronous(
                 boolean synchronous) {
             doSetProperty("synchronous", synchronous);
             return this;
@@ -308,7 +567,7 @@ public interface ConsulEndpointBuilderFactory {
          * 
          * Group: advanced
          */
-        default AdvancedConsulEndpointProducerBuilder synchronous(
+        default AdvancedConsulEndpointConsumerBuilder synchronous(
                 String synchronous) {
             doSetProperty("synchronous", synchronous);
             return this;
@@ -316,17 +575,692 @@ public interface ConsulEndpointBuilderFactory {
     }
 
     /**
-     * Builder for endpoint for the Consul component.
+     * Builder for endpoint producers for the Consul component.
      */
-    public interface ConsulEndpointBuilder
+    public interface ConsulEndpointProducerBuilder
             extends
-                ConsulEndpointConsumerBuilder, ConsulEndpointProducerBuilder {
-        default AdvancedConsulEndpointBuilder advanced() {
-            return (AdvancedConsulEndpointBuilder) this;
+                EndpointProducerBuilder {
+        default AdvancedConsulEndpointProducerBuilder advanced() {
+            return (AdvancedConsulEndpointProducerBuilder) this;
         }
-    }
-
-    /**
+        /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder connectTimeoutMillis(
+                Long connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder connectTimeoutMillis(
+                String connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option is a: <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder consulClient(Object consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option will be converted to a
+         * <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder consulClient(String consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * The default key. Can be overridden by CamelConsulKey.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder key(String key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder pingInstance(boolean pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder pingInstance(String pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder readTimeoutMillis(
+                Long readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder readTimeoutMillis(
+                String readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option is a: <code>java.util.Set&lt;java.lang.String&gt;</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder tags(Set<String> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option will be converted to a
+         * <code>java.util.Set&lt;java.lang.String&gt;</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The Consul agent URL.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder url(String url) {
+            doSetProperty("url", url);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder writeTimeoutMillis(
+                Long writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointProducerBuilder writeTimeoutMillis(
+                String writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
+         * The default action. Can be overridden by CamelConsulAction.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         */
+        default ConsulEndpointProducerBuilder action(String action) {
+            doSetProperty("action", action);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: producer
+         */
+        default ConsulEndpointProducerBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: producer
+         */
+        default ConsulEndpointProducerBuilder lazyStartProducer(
+                String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Default to transform values retrieved from Consul i.e. on KV endpoint
+         * to string.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: producer
+         */
+        default ConsulEndpointProducerBuilder valueAsString(
+                boolean valueAsString) {
+            doSetProperty("valueAsString", valueAsString);
+            return this;
+        }
+        /**
+         * Default to transform values retrieved from Consul i.e. on KV endpoint
+         * to string.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: producer
+         */
+        default ConsulEndpointProducerBuilder valueAsString(String valueAsString) {
+            doSetProperty("valueAsString", valueAsString);
+            return this;
+        }
+        /**
+         * Sets the ACL token to be used with Consul.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointProducerBuilder aclToken(String aclToken) {
+            doSetProperty("aclToken", aclToken);
+            return this;
+        }
+        /**
+         * Sets the password to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointProducerBuilder password(String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointProducerBuilder sslContextParameters(
+                Object sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointProducerBuilder sslContextParameters(
+                String sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * Sets the username to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointProducerBuilder userName(String userName) {
+            doSetProperty("userName", userName);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the Consul component.
+     */
+    public interface AdvancedConsulEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default ConsulEndpointProducerBuilder basic() {
+            return (ConsulEndpointProducerBuilder) this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
+         * 
+         * The option is a:
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder consistencyMode(
+                ConsistencyMode consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
+            return this;
+        }
+        /**
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
+         * 
+         * The option will be converted to a
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder consistencyMode(
+                String consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
+            return this;
+        }
+        /**
+         * The data center.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder datacenter(
+                String datacenter) {
+            doSetProperty("datacenter", datacenter);
+            return this;
+        }
+        /**
+         * The near node to use for queries.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder nearNode(String nearNode) {
+            doSetProperty("nearNode", nearNode);
+            return this;
+        }
+        /**
+         * The note meta-data to use for queries.
+         * 
+         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
+         * type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder nodeMeta(
+                List<String> nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
+            return this;
+        }
+        /**
+         * The note meta-data to use for queries.
+         * 
+         * The option will be converted to a
+         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder nodeMeta(String nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder synchronous(
+                boolean synchronous) {
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointProducerBuilder synchronous(
+                String synchronous) {
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the Consul component.
+     */
+    public interface ConsulEndpointBuilder
+            extends
+                ConsulEndpointConsumerBuilder, ConsulEndpointProducerBuilder {
+        default AdvancedConsulEndpointBuilder advanced() {
+            return (AdvancedConsulEndpointBuilder) this;
+        }
+        /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder connectTimeoutMillis(
+                Long connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Connect timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder connectTimeoutMillis(
+                String connectTimeoutMillis) {
+            doSetProperty("connectTimeoutMillis", connectTimeoutMillis);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option is a: <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder consulClient(Object consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * Reference to a com.orbitz.consul.Consul in the registry.
+         * 
+         * The option will be converted to a
+         * <code>com.orbitz.consul.Consul</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder consulClient(String consulClient) {
+            doSetProperty("consulClient", consulClient);
+            return this;
+        }
+        /**
+         * The default key. Can be overridden by CamelConsulKey.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder key(String key) {
+            doSetProperty("key", key);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder pingInstance(boolean pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Configure if the AgentClient should attempt a ping before returning
+         * the Consul instance.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder pingInstance(String pingInstance) {
+            doSetProperty("pingInstance", pingInstance);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder readTimeoutMillis(Long readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Read timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder readTimeoutMillis(String readTimeoutMillis) {
+            doSetProperty("readTimeoutMillis", readTimeoutMillis);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option is a: <code>java.util.Set&lt;java.lang.String&gt;</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder tags(Set<String> tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * Set tags. You can separate multiple tags by comma.
+         * 
+         * The option will be converted to a
+         * <code>java.util.Set&lt;java.lang.String&gt;</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder tags(String tags) {
+            doSetProperty("tags", tags);
+            return this;
+        }
+        /**
+         * The Consul agent URL.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder url(String url) {
+            doSetProperty("url", url);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder writeTimeoutMillis(Long writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
+         * Write timeout for OkHttpClient.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: common
+         */
+        default ConsulEndpointBuilder writeTimeoutMillis(
+                String writeTimeoutMillis) {
+            doSetProperty("writeTimeoutMillis", writeTimeoutMillis);
+            return this;
+        }
+        /**
+         * Sets the ACL token to be used with Consul.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointBuilder aclToken(String aclToken) {
+            doSetProperty("aclToken", aclToken);
+            return this;
+        }
+        /**
+         * Sets the password to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointBuilder password(String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointBuilder sslContextParameters(
+                Object sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * SSL configuration using an
+         * org.apache.camel.support.jsse.SSLContextParameters instance.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.support.jsse.SSLContextParameters</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointBuilder sslContextParameters(
+                String sslContextParameters) {
+            doSetProperty("sslContextParameters", sslContextParameters);
+            return this;
+        }
+        /**
+         * Sets the username to be used for basic authentication.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         */
+        default ConsulEndpointBuilder userName(String userName) {
+            doSetProperty("userName", userName);
+            return this;
+        }
+    }
+
+    /**
      * Advanced builder for endpoint for the Consul component.
      */
     public interface AdvancedConsulEndpointBuilder
@@ -362,6 +1296,80 @@ public interface ConsulEndpointBuilderFactory {
             return this;
         }
         /**
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
+         * 
+         * The option is a:
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder consistencyMode(
+                ConsistencyMode consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
+            return this;
+        }
+        /**
+         * The consistencyMode used for queries, default
+         * ConsistencyMode.DEFAULT.
+         * 
+         * The option will be converted to a
+         * <code>com.orbitz.consul.option.ConsistencyMode</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder consistencyMode(
+                String consistencyMode) {
+            doSetProperty("consistencyMode", consistencyMode);
+            return this;
+        }
+        /**
+         * The data center.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder datacenter(String datacenter) {
+            doSetProperty("datacenter", datacenter);
+            return this;
+        }
+        /**
+         * The near node to use for queries.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder nearNode(String nearNode) {
+            doSetProperty("nearNode", nearNode);
+            return this;
+        }
+        /**
+         * The note meta-data to use for queries.
+         * 
+         * The option is a: <code>java.util.List&lt;java.lang.String&gt;</code>
+         * type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder nodeMeta(List<String> nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
+            return this;
+        }
+        /**
+         * The note meta-data to use for queries.
+         * 
+         * The option will be converted to a
+         * <code>java.util.List&lt;java.lang.String&gt;</code> type.
+         * 
+         * Group: advanced
+         */
+        default AdvancedConsulEndpointBuilder nodeMeta(String nodeMeta) {
+            doSetProperty("nodeMeta", nodeMeta);
+            return this;
+        }
+        /**
          * Sets whether synchronous processing should be strictly used, or Camel
          * is allowed to use asynchronous processing (if supported).
          * 
@@ -386,6 +1394,16 @@ public interface ConsulEndpointBuilderFactory {
             return this;
         }
     }
+
+    /**
+     * Proxy enum for <code>com.orbitz.consul.option.ConsistencyMode</code>
+     * enum.
+     */
+    enum ConsistencyMode {
+        DEFAULT,
+        STALE,
+        CONSISTENT;
+    }
     /**
      * Consul (camel-consul)
      * The camel consul component allows you to work with Consul, a distributed,
diff --git a/platforms/spring-boot/components-starter/camel-consul-starter/src/main/java/org/apache/camel/component/consul/springboot/ConsulComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-consul-starter/src/main/java/org/apache/camel/component/consul/springboot/ConsulComponentConfiguration.java
index 800fd9b..4389156 100644
--- a/platforms/spring-boot/components-starter/camel-consul-starter/src/main/java/org/apache/camel/component/consul/springboot/ConsulComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-consul-starter/src/main/java/org/apache/camel/component/consul/springboot/ConsulComponentConfiguration.java
@@ -205,7 +205,7 @@ public class ConsulComponentConfiguration
          * Default to transform values retrieved from Consul i.e. on KV endpoint
          * to string.
          */
-        private Boolean valueAsString;
+        private Boolean valueAsString = false;
         /**
          * The default key. Can be overridden by CamelConsulKey
          */
@@ -238,7 +238,7 @@ public class ConsulComponentConfiguration
         /**
          * The consistencyMode used for queries, default ConsistencyMode.DEFAULT
          */
-        private ConsistencyMode consistencyMode;
+        private ConsistencyMode consistencyMode = ConsistencyMode.DEFAULT;
         /**
          * Set tags. You can separate multiple tags by comma.
          */
@@ -276,11 +276,11 @@ public class ConsulComponentConfiguration
          * Configure if the AgentClient should attempt a ping before returning
          * the Consul instance
          */
-        private Boolean pingInstance;
+        private Boolean pingInstance = true;
         /**
          * The second to wait for a watch event, default 10 seconds
          */
-        private Integer blockSeconds;
+        private Integer blockSeconds = 10;
         /**
          * The first index for watch for, default 0
          */
@@ -288,7 +288,7 @@ public class ConsulComponentConfiguration
         /**
          * Recursively watch, default false
          */
-        private Boolean recursive;
+        private Boolean recursive = false;
 
         public String getAction() {
             return action;