You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/01/13 07:00:48 UTC

[camel] 02/02: Sync deps and fix dsl test

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

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

commit 49c01fd333831db06ce36c78de6fe4763653ec4c
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Jan 13 07:59:14 2021 +0100

    Sync deps and fix dsl test
---
 camel-dependencies/pom.xml                         |    2 +-
 .../dsl/RabbitMQEndpointBuilderFactory.java        | 4506 ++++++++++++++++----
 .../builder/endpoint/RabbitMQMultiValueTest.java   |   10 +-
 3 files changed, 3729 insertions(+), 789 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 2161c60..723c74f 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -71,7 +71,7 @@
     <awaitility-version>4.0.3</awaitility-version>
     <aws-java-sdk-swf-libs>1.11.22</aws-java-sdk-swf-libs>
     <aws-java-sdk-version>1.11.714</aws-java-sdk-version>
-    <aws-java-sdk2-version>2.15.62</aws-java-sdk2-version>
+    <aws-java-sdk2-version>2.15.63</aws-java-sdk2-version>
     <aws-xray-version>2.6.1</aws-xray-version>
     <axiom-version>1.2.14</axiom-version>
     <azure-eventhubs-checkpointstore-blob-version>1.3.1</azure-eventhubs-checkpointstore-blob-version>
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java
index d1612ad..fad835e 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java
@@ -25,7 +25,7 @@ import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 import org.apache.camel.spi.ExceptionHandler;
 
 /**
- * Send and receive messages from RabbitMQ using Spring RabbitMQ client.
+ * Send and receive messages from RabbitMQ instances.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
@@ -34,7 +34,7 @@ public interface RabbitMQEndpointBuilderFactory {
 
 
     /**
-     * Builder for endpoint consumers for the Spring RabbitMQ component.
+     * Builder for endpoint consumers for the RabbitMQ component.
      */
     public interface RabbitMQEndpointConsumerBuilder
             extends
@@ -43,820 +43,3785 @@ public interface RabbitMQEndpointBuilderFactory {
             return (AdvancedRabbitMQEndpointConsumerBuilder) this;
         }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * If this option is set, camel-rabbitmq will try to create connection
+         * based on the setting of option addresses. The addresses value is a
+         * string which looks like server1:12345, server2:12345.
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
          * Group: common
          * 
-         * @param connectionFactory the value to set
+         * @param addresses the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder connectionFactory(
-                Object connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default RabbitMQEndpointConsumerBuilder addresses(String addresses) {
+            doSetProperty("addresses", addresses);
             return this;
         }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
+         * Default: true
          * Group: common
          * 
-         * @param connectionFactory the value to set
+         * @param autoDelete the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder connectionFactory(
-                String connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default RabbitMQEndpointConsumerBuilder autoDelete(boolean autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
-         * Default: false
+         * Default: true
          * Group: common
          * 
-         * @param disableReplyTo the value to set
+         * @param autoDelete the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder disableReplyTo(
-                boolean disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default RabbitMQEndpointConsumerBuilder autoDelete(String autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
          * 
-         * Default: false
+         * Default: true
          * Group: common
          * 
-         * @param disableReplyTo the value to set
+         * @param automaticRecoveryEnabled the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder disableReplyTo(
-                String disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default RabbitMQEndpointConsumerBuilder automaticRecoveryEnabled(
+                Boolean automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
             return this;
         }
         /**
-         * The value of a routing key to use. Default is empty which is not
-         * helpful when using the default (or any direct) exchange, but fine if
-         * the exchange is a headers exchange for instance.
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
          * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
          * 
+         * Default: true
          * Group: common
          * 
-         * @param routingKey the value to set
+         * @param automaticRecoveryEnabled the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder routingKey(String routingKey) {
-            doSetProperty("routingKey", routingKey);
+        default RabbitMQEndpointConsumerBuilder automaticRecoveryEnabled(
+                String automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a:
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
          * 
-         * Default: false
          * Group: common
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param connectionFactory the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder testConnectionOnStartup(
-                boolean testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default RabbitMQEndpointConsumerBuilder connectionFactory(
+                Object connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option will be converted to a
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
          * 
-         * Default: false
          * Group: common
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param connectionFactory the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder testConnectionOnStartup(
-                String testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default RabbitMQEndpointConsumerBuilder connectionFactory(
+                String connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
             return this;
         }
         /**
-         * Flag controlling the behaviour of the container with respect to
-         * message acknowledgement. The most common usage is to let the
-         * container handle the acknowledgements (so the listener doesn't need
-         * to know about the channel or the message). Set to
-         * AcknowledgeMode.MANUAL if the listener will send the acknowledgements
-         * itself using Channel.basicAck(long, boolean). Manual acks are
-         * consistent with either a transactional or non-transactional channel,
-         * but if you are doing no other work on the channel at the same other
-         * than receiving a single message then the transaction is probably
-         * unnecessary. Set to AcknowledgeMode.NONE to tell the broker not to
-         * expect any acknowledgements, and it will assume all messages are
-         * acknowledged as soon as they are sent (this is autoack in native
-         * Rabbit broker terms). If AcknowledgeMode.NONE then the channel cannot
-         * be transactional (so the container will fail on start up if that flag
-         * is accidentally set).
+         * The name of the dead letter exchange.
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.core.AcknowledgeMode&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer
+         * Group: common
          * 
-         * @param acknowledgeMode the value to set
+         * @param deadLetterExchange the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder acknowledgeMode(
-                AcknowledgeMode acknowledgeMode) {
-            doSetProperty("acknowledgeMode", acknowledgeMode);
+        default RabbitMQEndpointConsumerBuilder deadLetterExchange(
+                String deadLetterExchange) {
+            doSetProperty("deadLetterExchange", deadLetterExchange);
             return this;
         }
         /**
-         * Flag controlling the behaviour of the container with respect to
-         * message acknowledgement. The most common usage is to let the
-         * container handle the acknowledgements (so the listener doesn't need
-         * to know about the channel or the message). Set to
-         * AcknowledgeMode.MANUAL if the listener will send the acknowledgements
-         * itself using Channel.basicAck(long, boolean). Manual acks are
-         * consistent with either a transactional or non-transactional channel,
-         * but if you are doing no other work on the channel at the same other
-         * than receiving a single message then the transaction is probably
-         * unnecessary. Set to AcknowledgeMode.NONE to tell the broker not to
-         * expect any acknowledgements, and it will assume all messages are
-         * acknowledged as soon as they are sent (this is autoack in native
-         * Rabbit broker terms). If AcknowledgeMode.NONE then the channel cannot
-         * be transactional (so the container will fail on start up if that flag
-         * is accidentally set).
+         * The type of the dead letter exchange.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.core.AcknowledgeMode&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer
+         * Default: direct
+         * Group: common
          * 
-         * @param acknowledgeMode the value to set
+         * @param deadLetterExchangeType the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder acknowledgeMode(
-                String acknowledgeMode) {
-            doSetProperty("acknowledgeMode", acknowledgeMode);
+        default RabbitMQEndpointConsumerBuilder deadLetterExchangeType(
+                String deadLetterExchangeType) {
+            doSetProperty("deadLetterExchangeType", deadLetterExchangeType);
             return this;
         }
         /**
-         * Whether the consumer processes the Exchange asynchronously. If
-         * enabled then the consumer may pickup the next message from the queue,
-         * while the previous message is being processed asynchronously (by the
-         * Asynchronous Routing Engine). This means that messages may be
-         * processed not 100% strictly in order. If disabled (as default) then
-         * the Exchange is fully processed before the consumer will pickup the
-         * next message from the queue.
+         * The name of the dead letter queue.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param asyncConsumer the value to set
+         * @param deadLetterQueue the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder asyncConsumer(
-                boolean asyncConsumer) {
-            doSetProperty("asyncConsumer", asyncConsumer);
+        default RabbitMQEndpointConsumerBuilder deadLetterQueue(
+                String deadLetterQueue) {
+            doSetProperty("deadLetterQueue", deadLetterQueue);
             return this;
         }
         /**
-         * Whether the consumer processes the Exchange asynchronously. If
-         * enabled then the consumer may pickup the next message from the queue,
-         * while the previous message is being processed asynchronously (by the
-         * Asynchronous Routing Engine). This means that messages may be
-         * processed not 100% strictly in order. If disabled (as default) then
-         * the Exchange is fully processed before the consumer will pickup the
-         * next message from the queue.
+         * The routing key for the dead letter exchange.
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param asyncConsumer the value to set
+         * @param deadLetterRoutingKey the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder asyncConsumer(
-                String asyncConsumer) {
-            doSetProperty("asyncConsumer", asyncConsumer);
+        default RabbitMQEndpointConsumerBuilder deadLetterRoutingKey(
+                String deadLetterRoutingKey) {
+            doSetProperty("deadLetterRoutingKey", deadLetterRoutingKey);
             return this;
         }
         /**
-         * Specifies whether the consumer should auto declare binding between
-         * exchange, queue and routing key when starting.
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: true
-         * Group: consumer
+         * Group: common
          * 
-         * @param autoDeclare the value to set
+         * @param declare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder autoDeclare(boolean autoDeclare) {
-            doSetProperty("autoDeclare", autoDeclare);
+        default RabbitMQEndpointConsumerBuilder declare(boolean declare) {
+            doSetProperty("declare", declare);
             return this;
         }
         /**
-         * Specifies whether the consumer should auto declare binding between
-         * exchange, queue and routing key when starting.
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: true
-         * Group: consumer
+         * Group: common
          * 
-         * @param autoDeclare the value to set
+         * @param declare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder autoDeclare(String autoDeclare) {
-            doSetProperty("autoDeclare", autoDeclare);
+        default RabbitMQEndpointConsumerBuilder declare(String declare) {
+            doSetProperty("declare", declare);
             return this;
         }
         /**
-         * Specifies whether the consumer container should auto-startup.
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: true
-         * Group: consumer
+         * Group: common
          * 
-         * @param autoStartup the value to set
+         * @param durable the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder autoStartup(boolean autoStartup) {
-            doSetProperty("autoStartup", autoStartup);
+        default RabbitMQEndpointConsumerBuilder durable(boolean durable) {
+            doSetProperty("durable", durable);
             return this;
         }
         /**
-         * Specifies whether the consumer container should auto-startup.
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: true
-         * Group: consumer
+         * Group: common
          * 
-         * @param autoStartup the value to set
+         * @param durable the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder autoStartup(String autoStartup) {
-            doSetProperty("autoStartup", autoStartup);
+        default RabbitMQEndpointConsumerBuilder durable(String durable) {
+            doSetProperty("durable", durable);
             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
-         * 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.
+         * The exchange type such as direct or topic.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: direct
+         * Group: common
+         * 
+         * @param exchangeType the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder exchangeType(String exchangeType) {
+            doSetProperty("exchangeType", exchangeType);
+            return this;
+        }
+        /**
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param bridgeErrorHandler the value to set
+         * @param exclusive the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+        default RabbitMQEndpointConsumerBuilder exclusive(boolean exclusive) {
+            doSetProperty("exclusive", exclusive);
             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
-         * 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.
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param bridgeErrorHandler the value to set
+         * @param exclusive the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder bridgeErrorHandler(
-                String bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+        default RabbitMQEndpointConsumerBuilder exclusive(String exclusive) {
+            doSetProperty("exclusive", exclusive);
             return this;
         }
         /**
-         * The name of the dead letter exchange.
+         * The hostname of the running rabbitmq instance or cluster.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer
+         * Group: common
          * 
-         * @param deadLetterExchange the value to set
+         * @param hostname the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder deadLetterExchange(
-                String deadLetterExchange) {
-            doSetProperty("deadLetterExchange", deadLetterExchange);
+        default RabbitMQEndpointConsumerBuilder hostname(String hostname) {
+            doSetProperty("hostname", hostname);
             return this;
         }
         /**
-         * The type of the dead letter exchange.
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
          * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Default: direct
-         * Group: consumer
+         * Default: false
+         * Group: common
          * 
-         * @param deadLetterExchangeType the value to set
+         * @param passive the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder deadLetterExchangeType(
-                String deadLetterExchangeType) {
-            doSetProperty("deadLetterExchangeType", deadLetterExchangeType);
+        default RabbitMQEndpointConsumerBuilder passive(boolean passive) {
+            doSetProperty("passive", passive);
             return this;
         }
         /**
-         * The name of the dead letter queue.
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
          * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
-         * Group: consumer
+         * Default: false
+         * Group: common
          * 
-         * @param deadLetterQueue the value to set
+         * @param passive the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder deadLetterQueue(
-                String deadLetterQueue) {
-            doSetProperty("deadLetterQueue", deadLetterQueue);
+        default RabbitMQEndpointConsumerBuilder passive(String passive) {
+            doSetProperty("passive", passive);
             return this;
         }
         /**
-         * The routing key for the dead letter exchange.
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param portNumber the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder portNumber(int portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param portNumber the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder portNumber(String portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * The queue to receive messages from.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer
+         * Group: common
          * 
-         * @param deadLetterRoutingKey the value to set
+         * @param queue the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder deadLetterRoutingKey(
-                String deadLetterRoutingKey) {
-            doSetProperty("deadLetterRoutingKey", deadLetterRoutingKey);
+        default RabbitMQEndpointConsumerBuilder queue(String queue) {
+            doSetProperty("queue", queue);
             return this;
         }
         /**
-         * The type of the exchange.
+         * The routing key to use when binding a consumer queue to the exchange.
+         * For producer routing keys, you set the header rabbitmq.ROUTING_KEY.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: direct
-         * Group: consumer
+         * Group: common
          * 
-         * @param exchangeType the value to set
+         * @param routingKey the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder exchangeType(String exchangeType) {
-            doSetProperty("exchangeType", exchangeType);
+        default RabbitMQEndpointConsumerBuilder routingKey(String routingKey) {
+            doSetProperty("routingKey", routingKey);
             return this;
         }
         /**
-         * Set to true for an exclusive consumer.
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param exclusive the value to set
+         * @param skipDlqDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder exclusive(boolean exclusive) {
-            doSetProperty("exclusive", exclusive);
+        default RabbitMQEndpointConsumerBuilder skipDlqDeclare(
+                boolean skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
             return this;
         }
         /**
-         * Set to true for an exclusive consumer.
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param exclusive the value to set
+         * @param skipDlqDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder exclusive(String exclusive) {
-            doSetProperty("exclusive", exclusive);
+        default RabbitMQEndpointConsumerBuilder skipDlqDeclare(
+                String skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
             return this;
         }
         /**
-         * Set to true for an no-local consumer.
+         * This can be used if we need to declare the queue but not the
+         * exchange.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param noLocal the value to set
+         * @param skipExchangeDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder noLocal(boolean noLocal) {
-            doSetProperty("noLocal", noLocal);
+        default RabbitMQEndpointConsumerBuilder skipExchangeDeclare(
+                boolean skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
             return this;
         }
         /**
-         * Set to true for an no-local consumer.
+         * This can be used if we need to declare the queue but not the
+         * exchange.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: false
-         * Group: consumer
+         * Group: common
          * 
-         * @param noLocal the value to set
+         * @param skipExchangeDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder noLocal(String noLocal) {
-            doSetProperty("noLocal", noLocal);
+        default RabbitMQEndpointConsumerBuilder skipExchangeDeclare(
+                String skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
             return this;
         }
         /**
-         * The queue(s) to use for consuming messages. Multiple queue names can
-         * be separated by comma. If none has been configured then Camel will
-         * generate an unique id as the queue name for the consumer.
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
          * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Group: consumer
+         * Default: false
+         * Group: common
          * 
-         * @param queues the value to set
+         * @param skipQueueBind the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointConsumerBuilder queues(String queues) {
-            doSetProperty("queues", queues);
+        default RabbitMQEndpointConsumerBuilder skipQueueBind(
+                boolean skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
             return this;
         }
-    }
-
-    /**
-     * Advanced builder for endpoint consumers for the Spring RabbitMQ
-     * component.
-     */
-    public interface AdvancedRabbitMQEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default RabbitMQEndpointConsumerBuilder basic() {
-            return (RabbitMQEndpointConsumerBuilder) this;
-        }
         /**
-         * 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.
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
          * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
-         * Group: consumer (advanced)
+         * Default: false
+         * Group: common
          * 
-         * @param exceptionHandler the value to set
+         * @param skipQueueBind the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder exceptionHandler(
-                ExceptionHandler exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
+        default RabbitMQEndpointConsumerBuilder skipQueueBind(
+                String skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
             return this;
         }
         /**
-         * 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.
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Group: consumer (advanced)
+         * Default: false
+         * Group: common
          * 
-         * @param exceptionHandler the value to set
+         * @param skipQueueDeclare the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder exceptionHandler(
+        default RabbitMQEndpointConsumerBuilder skipQueueDeclare(
+                boolean skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder skipQueueDeclare(
+                String skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
+            return this;
+        }
+        /**
+         * The vhost for the channel.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: /
+         * Group: common
+         * 
+         * @param vhost the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder vhost(String vhost) {
+            doSetProperty("vhost", vhost);
+            return this;
+        }
+        /**
+         * If messages should be auto acknowledged.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: consumer
+         * 
+         * @param autoAck the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder autoAck(boolean autoAck) {
+            doSetProperty("autoAck", autoAck);
+            return this;
+        }
+        /**
+         * If messages should be auto acknowledged.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: consumer
+         * 
+         * @param autoAck the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder autoAck(String autoAck) {
+            doSetProperty("autoAck", autoAck);
+            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
+         * 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.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder bridgeErrorHandler(
+                boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            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
+         * 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.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder bridgeErrorHandler(
+                String bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Number of concurrent consumers when consuming from broker. (eg
+         * similar as to the same option for the JMS component).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 1
+         * Group: consumer
+         * 
+         * @param concurrentConsumers the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder concurrentConsumers(
+                int concurrentConsumers) {
+            doSetProperty("concurrentConsumers", concurrentConsumers);
+            return this;
+        }
+        /**
+         * Number of concurrent consumers when consuming from broker. (eg
+         * similar as to the same option for the JMS component).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 1
+         * Group: consumer
+         * 
+         * @param concurrentConsumers the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder concurrentConsumers(
+                String concurrentConsumers) {
+            doSetProperty("concurrentConsumers", concurrentConsumers);
+            return this;
+        }
+        /**
+         * Specify a client-generated consumer tag to establish context when
+         * invoking the consume operation.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param consumerTag the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder consumerTag(String consumerTag) {
+            doSetProperty("consumerTag", consumerTag);
+            return this;
+        }
+        /**
+         * Request exclusive access to the queue (meaning only this consumer can
+         * access the queue). This is useful when you want a long-lived shared
+         * queue to be temporarily accessible by just one consumer.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param exclusiveConsumer the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder exclusiveConsumer(
+                boolean exclusiveConsumer) {
+            doSetProperty("exclusiveConsumer", exclusiveConsumer);
+            return this;
+        }
+        /**
+         * Request exclusive access to the queue (meaning only this consumer can
+         * access the queue). This is useful when you want a long-lived shared
+         * queue to be temporarily accessible by just one consumer.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param exclusiveConsumer the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder exclusiveConsumer(
+                String exclusiveConsumer) {
+            doSetProperty("exclusiveConsumer", exclusiveConsumer);
+            return this;
+        }
+        /**
+         * The maximum number of messages that the server will deliver, 0 if
+         * unlimited. You need to specify the option of prefetchSize,
+         * prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param prefetchCount the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchCount(int prefetchCount) {
+            doSetProperty("prefetchCount", prefetchCount);
+            return this;
+        }
+        /**
+         * The maximum number of messages that the server will deliver, 0 if
+         * unlimited. You need to specify the option of prefetchSize,
+         * prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param prefetchCount the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchCount(
+                String prefetchCount) {
+            doSetProperty("prefetchCount", prefetchCount);
+            return this;
+        }
+        /**
+         * Enables the quality of service on the RabbitMQConsumer side. You need
+         * to specify the option of prefetchSize, prefetchCount, prefetchGlobal
+         * at the same time.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param prefetchEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchEnabled(
+                boolean prefetchEnabled) {
+            doSetProperty("prefetchEnabled", prefetchEnabled);
+            return this;
+        }
+        /**
+         * Enables the quality of service on the RabbitMQConsumer side. You need
+         * to specify the option of prefetchSize, prefetchCount, prefetchGlobal
+         * at the same time.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param prefetchEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchEnabled(
+                String prefetchEnabled) {
+            doSetProperty("prefetchEnabled", prefetchEnabled);
+            return this;
+        }
+        /**
+         * If the settings should be applied to the entire channel rather than
+         * each consumer You need to specify the option of prefetchSize,
+         * prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param prefetchGlobal the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchGlobal(
+                boolean prefetchGlobal) {
+            doSetProperty("prefetchGlobal", prefetchGlobal);
+            return this;
+        }
+        /**
+         * If the settings should be applied to the entire channel rather than
+         * each consumer You need to specify the option of prefetchSize,
+         * prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param prefetchGlobal the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchGlobal(
+                String prefetchGlobal) {
+            doSetProperty("prefetchGlobal", prefetchGlobal);
+            return this;
+        }
+        /**
+         * The maximum amount of content (measured in octets) that the server
+         * will deliver, 0 if unlimited. You need to specify the option of
+         * prefetchSize, prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param prefetchSize the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchSize(int prefetchSize) {
+            doSetProperty("prefetchSize", prefetchSize);
+            return this;
+        }
+        /**
+         * The maximum amount of content (measured in octets) that the server
+         * will deliver, 0 if unlimited. You need to specify the option of
+         * prefetchSize, prefetchCount, prefetchGlobal at the same time.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param prefetchSize the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder prefetchSize(String prefetchSize) {
+            doSetProperty("prefetchSize", prefetchSize);
+            return this;
+        }
+        /**
+         * This is used by the consumer to control rejection of the message.
+         * When the consumer is complete processing the exchange, and if the
+         * exchange failed, then the consumer is going to reject the message
+         * from the RabbitMQ broker. If the header CamelRabbitmqRequeue is
+         * present then the value of the header will be used, otherwise this
+         * endpoint value is used as fallback. If the value is false (by
+         * default) then the message is discarded/dead-lettered. If the value is
+         * true, then the message is re-queued.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param reQueue the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder reQueue(boolean reQueue) {
+            doSetProperty("reQueue", reQueue);
+            return this;
+        }
+        /**
+         * This is used by the consumer to control rejection of the message.
+         * When the consumer is complete processing the exchange, and if the
+         * exchange failed, then the consumer is going to reject the message
+         * from the RabbitMQ broker. If the header CamelRabbitmqRequeue is
+         * present then the value of the header will be used, otherwise this
+         * endpoint value is used as fallback. If the value is false (by
+         * default) then the message is discarded/dead-lettered. If the value is
+         * true, then the message is re-queued.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param reQueue the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder reQueue(String reQueue) {
+            doSetProperty("reQueue", reQueue);
+            return this;
+        }
+        /**
+         * Password for authenticated access.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: guest
+         * Group: security
+         * 
+         * @param password the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder password(String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+        /**
+         * Enables SSL on connection, accepted value are true, TLS and 'SSLv3.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param sslProtocol the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder sslProtocol(String sslProtocol) {
+            doSetProperty("sslProtocol", sslProtocol);
+            return this;
+        }
+        /**
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
+         * 
+         * The option is a: &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt;
+         * type.
+         * 
+         * Group: security
+         * 
+         * @param trustManager the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder trustManager(Object trustManager) {
+            doSetProperty("trustManager", trustManager);
+            return this;
+        }
+        /**
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param trustManager the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder trustManager(String trustManager) {
+            doSetProperty("trustManager", trustManager);
+            return this;
+        }
+        /**
+         * Username in case of authenticated access.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: guest
+         * Group: security
+         * 
+         * @param username the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointConsumerBuilder username(String username) {
+            doSetProperty("username", username);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint consumers for the RabbitMQ component.
+     */
+    public interface AdvancedRabbitMQEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default RabbitMQEndpointConsumerBuilder basic() {
+            return (RabbitMQEndpointConsumerBuilder) this;
+        }
+        /**
+         * 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.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder exceptionHandler(
+                ExceptionHandler exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * 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.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder exceptionHandler(
                 String exceptionHandler) {
             doSetProperty("exceptionHandler", exceptionHandler);
             return this;
         }
         /**
-         * Sets the exchange pattern when the consumer creates an exchange.
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder exchangePattern(
+                ExchangePattern exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder exchangePattern(
+                String exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * The consumer uses a Thread Pool Executor with a fixed number of
+         * threads. This setting allows you to set that number of threads.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: consumer (advanced)
+         * 
+         * @param threadPoolSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder threadPoolSize(
+                int threadPoolSize) {
+            doSetProperty("threadPoolSize", threadPoolSize);
+            return this;
+        }
+        /**
+         * The consumer uses a Thread Pool Executor with a fixed number of
+         * threads. This setting allows you to set that number of threads.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: consumer (advanced)
+         * 
+         * @param threadPoolSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder threadPoolSize(
+                String threadPoolSize) {
+            doSetProperty("threadPoolSize", threadPoolSize);
+            return this;
+        }
+        /**
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param allowMessageBodySerialization the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder allowMessageBodySerialization(
+                boolean allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
+            return this;
+        }
+        /**
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param allowMessageBodySerialization the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder allowMessageBodySerialization(
+                String allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
+            return this;
+        }
+        /**
+         * Specify arguments for configuring the different RabbitMQ concepts, a
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * The option is multivalued, and you can use the args(String, Object)
+         * method to add a value (call the method multiple times to set more
+         * values).
+         * 
+         * Group: advanced
+         * 
+         * @param key the option key
+         * @param value the option value
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder args(
+                String key,
+                Object value) {
+            doSetMultiValueProperty("args", "arg." + key, value);
+            return this;
+        }
+        /**
+         * Specify arguments for configuring the different RabbitMQ concepts, a
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * The option is multivalued, and you can use the args(String, Object)
+         * method to add a value (call the method multiple times to set more
+         * values).
+         * 
+         * Group: advanced
+         * 
+         * @param values the values
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder args(Map values) {
+            doSetMultiValueProperties("args", "arg.", values);
+            return this;
+        }
+        /**
+         * Connection client properties (client info used in negotiating with
+         * the server).
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param clientProperties the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder clientProperties(
+                Map<String, Object> clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
+            return this;
+        }
+        /**
+         * Connection client properties (client info used in negotiating with
+         * the server).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param clientProperties the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder clientProperties(
+                String clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
+            return this;
+        }
+        /**
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param connectionFactoryExceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder connectionFactoryExceptionHandler(
+                Object connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
+            return this;
+        }
+        /**
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param connectionFactoryExceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder connectionFactoryExceptionHandler(
+                String connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
+            return this;
+        }
+        /**
+         * Connection timeout.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param connectionTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder connectionTimeout(
+                int connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
+            return this;
+        }
+        /**
+         * Connection timeout.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param connectionTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder connectionTimeout(
+                String connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
+            return this;
+        }
+        /**
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 5000
+         * Group: advanced
+         * 
+         * @param networkRecoveryInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder networkRecoveryInterval(
+                Integer networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
+            return this;
+        }
+        /**
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 5000
+         * Group: advanced
+         * 
+         * @param networkRecoveryInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder networkRecoveryInterval(
+                String networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
+            return this;
+        }
+        /**
+         * Connection requested channel max (max number of channels offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 2047
+         * Group: advanced
+         * 
+         * @param requestedChannelMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedChannelMax(
+                int requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
+            return this;
+        }
+        /**
+         * Connection requested channel max (max number of channels offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 2047
+         * Group: advanced
+         * 
+         * @param requestedChannelMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedChannelMax(
+                String requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
+            return this;
+        }
+        /**
+         * Connection requested frame max (max size of frame offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 0
+         * Group: advanced
+         * 
+         * @param requestedFrameMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedFrameMax(
+                int requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
+            return this;
+        }
+        /**
+         * Connection requested frame max (max size of frame offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 0
+         * Group: advanced
+         * 
+         * @param requestedFrameMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedFrameMax(
+                String requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
+            return this;
+        }
+        /**
+         * Connection requested heartbeat (heart-beat in seconds offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60
+         * Group: advanced
+         * 
+         * @param requestedHeartbeat the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedHeartbeat(
+                int requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
+            return this;
+        }
+        /**
+         * Connection requested heartbeat (heart-beat in seconds offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60
+         * Group: advanced
+         * 
+         * @param requestedHeartbeat the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestedHeartbeat(
+                String requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
+            return this;
+        }
+        /**
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 20000
+         * Group: advanced
+         * 
+         * @param requestTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestTimeout(
+                long requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 20000
+         * Group: advanced
+         * 
+         * @param requestTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestTimeout(
+                String requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * Set requestTimeoutCheckerInterval for inOut exchange.
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: advanced
+         * 
+         * @param requestTimeoutCheckerInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Set requestTimeoutCheckerInterval for inOut exchange.
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: advanced
+         * 
+         * @param requestTimeoutCheckerInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param synchronous the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder 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 &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param synchronous the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder synchronous(
+                String synchronous) {
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder topologyRecoveryEnabled(
+                Boolean topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder topologyRecoveryEnabled(
+                String topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param transferException the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder transferException(
+                boolean transferException) {
+            doSetProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param transferException the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointConsumerBuilder transferException(
+                String transferException) {
+            doSetProperty("transferException", transferException);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the RabbitMQ component.
+     */
+    public interface RabbitMQEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default AdvancedRabbitMQEndpointProducerBuilder advanced() {
+            return (AdvancedRabbitMQEndpointProducerBuilder) this;
+        }
+        /**
+         * If this option is set, camel-rabbitmq will try to create connection
+         * based on the setting of option addresses. The addresses value is a
+         * string which looks like server1:12345, server2:12345.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param addresses the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder addresses(String addresses) {
+            doSetProperty("addresses", addresses);
+            return this;
+        }
+        /**
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param autoDelete the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder autoDelete(boolean autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
+            return this;
+        }
+        /**
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param autoDelete the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder autoDelete(String autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
+            return this;
+        }
+        /**
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param automaticRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder automaticRecoveryEnabled(
+                Boolean automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
+            return this;
+        }
+        /**
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param automaticRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder automaticRecoveryEnabled(
+                String automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
+            return this;
+        }
+        /**
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param connectionFactory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder connectionFactory(
+                Object connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param connectionFactory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder connectionFactory(
+                String connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * The name of the dead letter exchange.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param deadLetterExchange the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder deadLetterExchange(
+                String deadLetterExchange) {
+            doSetProperty("deadLetterExchange", deadLetterExchange);
+            return this;
+        }
+        /**
+         * The type of the dead letter exchange.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: direct
+         * Group: common
+         * 
+         * @param deadLetterExchangeType the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder deadLetterExchangeType(
+                String deadLetterExchangeType) {
+            doSetProperty("deadLetterExchangeType", deadLetterExchangeType);
+            return this;
+        }
+        /**
+         * The name of the dead letter queue.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param deadLetterQueue the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder deadLetterQueue(
+                String deadLetterQueue) {
+            doSetProperty("deadLetterQueue", deadLetterQueue);
+            return this;
+        }
+        /**
+         * The routing key for the dead letter exchange.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param deadLetterRoutingKey the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder deadLetterRoutingKey(
+                String deadLetterRoutingKey) {
+            doSetProperty("deadLetterRoutingKey", deadLetterRoutingKey);
+            return this;
+        }
+        /**
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param declare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder declare(boolean declare) {
+            doSetProperty("declare", declare);
+            return this;
+        }
+        /**
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param declare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder declare(String declare) {
+            doSetProperty("declare", declare);
+            return this;
+        }
+        /**
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param durable the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder durable(boolean durable) {
+            doSetProperty("durable", durable);
+            return this;
+        }
+        /**
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param durable the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder durable(String durable) {
+            doSetProperty("durable", durable);
+            return this;
+        }
+        /**
+         * The exchange type such as direct or topic.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: direct
+         * Group: common
+         * 
+         * @param exchangeType the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder exchangeType(String exchangeType) {
+            doSetProperty("exchangeType", exchangeType);
+            return this;
+        }
+        /**
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param exclusive the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder exclusive(boolean exclusive) {
+            doSetProperty("exclusive", exclusive);
+            return this;
+        }
+        /**
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param exclusive the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder exclusive(String exclusive) {
+            doSetProperty("exclusive", exclusive);
+            return this;
+        }
+        /**
+         * The hostname of the running rabbitmq instance or cluster.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param hostname the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder hostname(String hostname) {
+            doSetProperty("hostname", hostname);
+            return this;
+        }
+        /**
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param passive the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder passive(boolean passive) {
+            doSetProperty("passive", passive);
+            return this;
+        }
+        /**
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param passive the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder passive(String passive) {
+            doSetProperty("passive", passive);
+            return this;
+        }
+        /**
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param portNumber the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder portNumber(int portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param portNumber the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder portNumber(String portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * The queue to receive messages from.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param queue the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder queue(String queue) {
+            doSetProperty("queue", queue);
+            return this;
+        }
+        /**
+         * The routing key to use when binding a consumer queue to the exchange.
+         * For producer routing keys, you set the header rabbitmq.ROUTING_KEY.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param routingKey the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder routingKey(String routingKey) {
+            doSetProperty("routingKey", routingKey);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipDlqDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipDlqDeclare(
+                boolean skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipDlqDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipDlqDeclare(
+                String skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
+            return this;
+        }
+        /**
+         * This can be used if we need to declare the queue but not the
+         * exchange.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipExchangeDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipExchangeDeclare(
+                boolean skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
+            return this;
+        }
+        /**
+         * This can be used if we need to declare the queue but not the
+         * exchange.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipExchangeDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipExchangeDeclare(
+                String skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
+            return this;
+        }
+        /**
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueBind the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipQueueBind(
+                boolean skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
+            return this;
+        }
+        /**
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueBind the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipQueueBind(
+                String skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipQueueDeclare(
+                boolean skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder skipQueueDeclare(
+                String skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
+            return this;
+        }
+        /**
+         * The vhost for the channel.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: /
+         * Group: common
+         * 
+         * @param vhost the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder vhost(String vhost) {
+            doSetProperty("vhost", vhost);
+            return this;
+        }
+        /**
+         * Map of additional headers. These headers will be set only when the
+         * 'allowCustomHeaders' is set to true.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param additionalHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder additionalHeaders(
+                Map<String, Object> additionalHeaders) {
+            doSetProperty("additionalHeaders", additionalHeaders);
+            return this;
+        }
+        /**
+         * Map of additional headers. These headers will be set only when the
+         * 'allowCustomHeaders' is set to true.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param additionalHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder additionalHeaders(
+                String additionalHeaders) {
+            doSetProperty("additionalHeaders", additionalHeaders);
+            return this;
+        }
+        /**
+         * Map of additional properties. These are standard RabbitMQ properties
+         * as defined in com.rabbitmq.client.AMQP.BasicProperties. The map keys
+         * should be from org.apache.camel.component.rabbitmq.RabbitMQConstants.
+         * Any other keys will be ignored.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param additionalProperties the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder additionalProperties(
+                Map<String, Object> additionalProperties) {
+            doSetProperty("additionalProperties", additionalProperties);
+            return this;
+        }
+        /**
+         * Map of additional properties. These are standard RabbitMQ properties
+         * as defined in com.rabbitmq.client.AMQP.BasicProperties. The map keys
+         * should be from org.apache.camel.component.rabbitmq.RabbitMQConstants.
+         * Any other keys will be ignored.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param additionalProperties the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder additionalProperties(
+                String additionalProperties) {
+            doSetProperty("additionalProperties", additionalProperties);
+            return this;
+        }
+        /**
+         * Allow pass custom values to header.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowCustomHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder allowCustomHeaders(
+                boolean allowCustomHeaders) {
+            doSetProperty("allowCustomHeaders", allowCustomHeaders);
+            return this;
+        }
+        /**
+         * Allow pass custom values to header.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowCustomHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder allowCustomHeaders(
+                String allowCustomHeaders) {
+            doSetProperty("allowCustomHeaders", allowCustomHeaders);
+            return this;
+        }
+        /**
+         * Allow pass null values to header.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowNullHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder allowNullHeaders(
+                boolean allowNullHeaders) {
+            doSetProperty("allowNullHeaders", allowNullHeaders);
+            return this;
+        }
+        /**
+         * Allow pass null values to header.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowNullHeaders the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder allowNullHeaders(
+                String allowNullHeaders) {
+            doSetProperty("allowNullHeaders", allowNullHeaders);
+            return this;
+        }
+        /**
+         * If the bridgeEndpoint is true, the producer will ignore the message
+         * header of rabbitmq.EXCHANGE_NAME and rabbitmq.ROUTING_KEY.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param bridgeEndpoint the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder bridgeEndpoint(
+                boolean bridgeEndpoint) {
+            doSetProperty("bridgeEndpoint", bridgeEndpoint);
+            return this;
+        }
+        /**
+         * If the bridgeEndpoint is true, the producer will ignore the message
+         * header of rabbitmq.EXCHANGE_NAME and rabbitmq.ROUTING_KEY.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param bridgeEndpoint the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder bridgeEndpoint(
+                String bridgeEndpoint) {
+            doSetProperty("bridgeEndpoint", bridgeEndpoint);
+            return this;
+        }
+        /**
+         * Get maximum number of opened channel in pool.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: producer
+         * 
+         * @param channelPoolMaxSize the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder channelPoolMaxSize(
+                int channelPoolMaxSize) {
+            doSetProperty("channelPoolMaxSize", channelPoolMaxSize);
+            return this;
+        }
+        /**
+         * Get maximum number of opened channel in pool.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: producer
+         * 
+         * @param channelPoolMaxSize the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder channelPoolMaxSize(
+                String channelPoolMaxSize) {
+            doSetProperty("channelPoolMaxSize", channelPoolMaxSize);
+            return this;
+        }
+        /**
+         * Set the maximum number of milliseconds to wait for a channel from the
+         * pool.
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: producer
+         * 
+         * @param channelPoolMaxWait the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder channelPoolMaxWait(
+                long channelPoolMaxWait) {
+            doSetProperty("channelPoolMaxWait", channelPoolMaxWait);
+            return this;
+        }
+        /**
+         * Set the maximum number of milliseconds to wait for a channel from the
+         * pool.
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: producer
+         * 
+         * @param channelPoolMaxWait the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder channelPoolMaxWait(
+                String channelPoolMaxWait) {
+            doSetProperty("channelPoolMaxWait", channelPoolMaxWait);
+            return this;
+        }
+        /**
+         * When true, an exception will be thrown when the message cannot be
+         * delivered (basic.return) and the message is marked as mandatory.
+         * PublisherAcknowledgement will also be activated in this case. See
+         * also publisher acknowledgements - When will messages be confirmed.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param guaranteedDeliveries the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder guaranteedDeliveries(
+                boolean guaranteedDeliveries) {
+            doSetProperty("guaranteedDeliveries", guaranteedDeliveries);
+            return this;
+        }
+        /**
+         * When true, an exception will be thrown when the message cannot be
+         * delivered (basic.return) and the message is marked as mandatory.
+         * PublisherAcknowledgement will also be activated in this case. See
+         * also publisher acknowledgements - When will messages be confirmed.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param guaranteedDeliveries the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder guaranteedDeliveries(
+                String guaranteedDeliveries) {
+            doSetProperty("guaranteedDeliveries", guaranteedDeliveries);
+            return this;
+        }
+        /**
+         * This flag tells the server how to react if the message cannot be
+         * routed to a queue consumer immediately. If this flag is set, the
+         * server will return an undeliverable message with a Return method. If
+         * this flag is zero, the server will queue the message, but with no
+         * guarantee that it will ever be consumed. If the header is present
+         * rabbitmq.IMMEDIATE it will override this option.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param immediate the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder immediate(boolean immediate) {
+            doSetProperty("immediate", immediate);
+            return this;
+        }
+        /**
+         * This flag tells the server how to react if the message cannot be
+         * routed to a queue consumer immediately. If this flag is set, the
+         * server will return an undeliverable message with a Return method. If
+         * this flag is zero, the server will queue the message, but with no
+         * guarantee that it will ever be consumed. If the header is present
+         * rabbitmq.IMMEDIATE it will override this option.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param immediate the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder immediate(String immediate) {
+            doSetProperty("immediate", immediate);
+            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: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder 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 &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder lazyStartProducer(
+                String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * This flag tells the server how to react if the message cannot be
+         * routed to a queue. If this flag is set, the server will return an
+         * unroutable message with a Return method. If this flag is zero, the
+         * server silently drops the message. If the header is present
+         * rabbitmq.MANDATORY it will override this option.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param mandatory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder mandatory(boolean mandatory) {
+            doSetProperty("mandatory", mandatory);
+            return this;
+        }
+        /**
+         * This flag tells the server how to react if the message cannot be
+         * routed to a queue. If this flag is set, the server will return an
+         * unroutable message with a Return method. If this flag is zero, the
+         * server silently drops the message. If the header is present
+         * rabbitmq.MANDATORY it will override this option.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param mandatory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder mandatory(String mandatory) {
+            doSetProperty("mandatory", mandatory);
+            return this;
+        }
+        /**
+         * When true, the message will be published with publisher
+         * acknowledgements turned on.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param publisherAcknowledgements the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder publisherAcknowledgements(
+                boolean publisherAcknowledgements) {
+            doSetProperty("publisherAcknowledgements", publisherAcknowledgements);
+            return this;
+        }
+        /**
+         * When true, the message will be published with publisher
+         * acknowledgements turned on.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param publisherAcknowledgements the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder publisherAcknowledgements(
+                String publisherAcknowledgements) {
+            doSetProperty("publisherAcknowledgements", publisherAcknowledgements);
+            return this;
+        }
+        /**
+         * The amount of time in milliseconds to wait for a basic.ack response
+         * from RabbitMQ server.
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param publisherAcknowledgementsTimeout the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder publisherAcknowledgementsTimeout(
+                long publisherAcknowledgementsTimeout) {
+            doSetProperty("publisherAcknowledgementsTimeout", publisherAcknowledgementsTimeout);
+            return this;
+        }
+        /**
+         * The amount of time in milliseconds to wait for a basic.ack response
+         * from RabbitMQ server.
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param publisherAcknowledgementsTimeout the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder publisherAcknowledgementsTimeout(
+                String publisherAcknowledgementsTimeout) {
+            doSetProperty("publisherAcknowledgementsTimeout", publisherAcknowledgementsTimeout);
+            return this;
+        }
+        /**
+         * Password for authenticated access.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: guest
+         * Group: security
+         * 
+         * @param password the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder password(String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+        /**
+         * Enables SSL on connection, accepted value are true, TLS and 'SSLv3.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param sslProtocol the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder sslProtocol(String sslProtocol) {
+            doSetProperty("sslProtocol", sslProtocol);
+            return this;
+        }
+        /**
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
+         * 
+         * The option is a: &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt;
+         * type.
+         * 
+         * Group: security
+         * 
+         * @param trustManager the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder trustManager(Object trustManager) {
+            doSetProperty("trustManager", trustManager);
+            return this;
+        }
+        /**
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param trustManager the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder trustManager(String trustManager) {
+            doSetProperty("trustManager", trustManager);
+            return this;
+        }
+        /**
+         * Username in case of authenticated access.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: guest
+         * Group: security
+         * 
+         * @param username the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointProducerBuilder username(String username) {
+            doSetProperty("username", username);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the RabbitMQ component.
+     */
+    public interface AdvancedRabbitMQEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default RabbitMQEndpointProducerBuilder basic() {
+            return (RabbitMQEndpointProducerBuilder) this;
+        }
+        /**
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param allowMessageBodySerialization the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder allowMessageBodySerialization(
+                boolean allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
+            return this;
+        }
+        /**
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param allowMessageBodySerialization the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder allowMessageBodySerialization(
+                String allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
+            return this;
+        }
+        /**
+         * Specify arguments for configuring the different RabbitMQ concepts, a
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * The option is multivalued, and you can use the args(String, Object)
+         * method to add a value (call the method multiple times to set more
+         * values).
+         * 
+         * Group: advanced
+         * 
+         * @param key the option key
+         * @param value the option value
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder args(
+                String key,
+                Object value) {
+            doSetMultiValueProperty("args", "arg." + key, value);
+            return this;
+        }
+        /**
+         * Specify arguments for configuring the different RabbitMQ concepts, a
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * The option is multivalued, and you can use the args(String, Object)
+         * method to add a value (call the method multiple times to set more
+         * values).
+         * 
+         * Group: advanced
+         * 
+         * @param values the values
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder args(Map values) {
+            doSetMultiValueProperties("args", "arg.", values);
+            return this;
+        }
+        /**
+         * Connection client properties (client info used in negotiating with
+         * the server).
+         * 
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param clientProperties the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder clientProperties(
+                Map<String, Object> clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
+            return this;
+        }
+        /**
+         * Connection client properties (client info used in negotiating with
+         * the server).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param clientProperties the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder clientProperties(
+                String clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
+            return this;
+        }
+        /**
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param connectionFactoryExceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder connectionFactoryExceptionHandler(
+                Object connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
+            return this;
+        }
+        /**
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param connectionFactoryExceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder connectionFactoryExceptionHandler(
+                String connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
+            return this;
+        }
+        /**
+         * Connection timeout.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param connectionTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder connectionTimeout(
+                int connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
+            return this;
+        }
+        /**
+         * Connection timeout.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param connectionTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder connectionTimeout(
+                String connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
+            return this;
+        }
+        /**
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 5000
+         * Group: advanced
+         * 
+         * @param networkRecoveryInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder networkRecoveryInterval(
+                Integer networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
+            return this;
+        }
+        /**
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 5000
+         * Group: advanced
+         * 
+         * @param networkRecoveryInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder networkRecoveryInterval(
+                String networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
+            return this;
+        }
+        /**
+         * Connection requested channel max (max number of channels offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 2047
+         * Group: advanced
+         * 
+         * @param requestedChannelMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedChannelMax(
+                int requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
+            return this;
+        }
+        /**
+         * Connection requested channel max (max number of channels offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 2047
+         * Group: advanced
+         * 
+         * @param requestedChannelMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedChannelMax(
+                String requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
+            return this;
+        }
+        /**
+         * Connection requested frame max (max size of frame offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 0
+         * Group: advanced
+         * 
+         * @param requestedFrameMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedFrameMax(
+                int requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
+            return this;
+        }
+        /**
+         * Connection requested frame max (max size of frame offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 0
+         * Group: advanced
+         * 
+         * @param requestedFrameMax the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedFrameMax(
+                String requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
+            return this;
+        }
+        /**
+         * Connection requested heartbeat (heart-beat in seconds offered).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60
+         * Group: advanced
+         * 
+         * @param requestedHeartbeat the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedHeartbeat(
+                int requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
+            return this;
+        }
+        /**
+         * Connection requested heartbeat (heart-beat in seconds offered).
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60
+         * Group: advanced
+         * 
+         * @param requestedHeartbeat the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestedHeartbeat(
+                String requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
+            return this;
+        }
+        /**
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 20000
+         * Group: advanced
+         * 
+         * @param requestTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestTimeout(
+                long requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 20000
+         * Group: advanced
+         * 
+         * @param requestTimeout the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestTimeout(
+                String requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * Set requestTimeoutCheckerInterval for inOut exchange.
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: advanced
+         * 
+         * @param requestTimeoutCheckerInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Set requestTimeoutCheckerInterval for inOut exchange.
+         * 
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 1000
+         * Group: advanced
+         * 
+         * @param requestTimeoutCheckerInterval the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param synchronous the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder 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 &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param synchronous the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder synchronous(
+                String synchronous) {
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder topologyRecoveryEnabled(
+                Boolean topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder topologyRecoveryEnabled(
+                String topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param transferException the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder transferException(
+                boolean transferException) {
+            doSetProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param transferException the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointProducerBuilder transferException(
+                String transferException) {
+            doSetProperty("transferException", transferException);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the RabbitMQ component.
+     */
+    public interface RabbitMQEndpointBuilder
+            extends
+                RabbitMQEndpointConsumerBuilder,
+                RabbitMQEndpointProducerBuilder {
+        default AdvancedRabbitMQEndpointBuilder advanced() {
+            return (AdvancedRabbitMQEndpointBuilder) this;
+        }
+        /**
+         * If this option is set, camel-rabbitmq will try to create connection
+         * based on the setting of option addresses. The addresses value is a
+         * string which looks like server1:12345, server2:12345.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param addresses the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder addresses(String addresses) {
+            doSetProperty("addresses", addresses);
+            return this;
+        }
+        /**
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param autoDelete the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder autoDelete(boolean autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
+            return this;
+        }
+        /**
+         * If it is true, the exchange will be deleted when it is no longer in
+         * use.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param autoDelete the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder autoDelete(String autoDelete) {
+            doSetProperty("autoDelete", autoDelete);
+            return this;
+        }
+        /**
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param automaticRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder automaticRecoveryEnabled(
+                Boolean automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
+            return this;
+        }
+        /**
+         * Enables connection automatic recovery (uses connection implementation
+         * that performs automatic recovery when existing connection has
+         * failures).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: common
+         * 
+         * @param automaticRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder automaticRecoveryEnabled(
+                String automaticRecoveryEnabled) {
+            doSetProperty("automaticRecoveryEnabled", automaticRecoveryEnabled);
+            return this;
+        }
+        /**
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
+         * 
+         * The option is a:
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param connectionFactory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder connectionFactory(
+                Object connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * To use a custom RabbitMQ connection factory. When this option is set,
+         * all connection options (connectionTimeout, requestedChannelMax...)
+         * set on URI are not used.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;com.rabbitmq.client.ConnectionFactory&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param connectionFactory the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder connectionFactory(
+                String connectionFactory) {
+            doSetProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * The name of the dead letter exchange.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param deadLetterExchange the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder deadLetterExchange(
+                String deadLetterExchange) {
+            doSetProperty("deadLetterExchange", deadLetterExchange);
+            return this;
+        }
+        /**
+         * The type of the dead letter exchange.
          * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer (advanced)
+         * Default: direct
+         * Group: common
          * 
-         * @param exchangePattern the value to set
+         * @param deadLetterExchangeType the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder exchangePattern(
-                ExchangePattern exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
+        default RabbitMQEndpointBuilder deadLetterExchangeType(
+                String deadLetterExchangeType) {
+            doSetProperty("deadLetterExchangeType", deadLetterExchangeType);
             return this;
         }
         /**
-         * Sets the exchange pattern when the consumer creates an exchange.
+         * The name of the dead letter queue.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: consumer (advanced)
+         * Group: common
          * 
-         * @param exchangePattern the value to set
+         * @param deadLetterQueue the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder exchangePattern(
-                String exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
+        default RabbitMQEndpointBuilder deadLetterQueue(String deadLetterQueue) {
+            doSetProperty("deadLetterQueue", deadLetterQueue);
             return this;
         }
         /**
-         * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * The routing key for the dead letter exchange.
          * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the args(String, Object)
-         * method to add a value (call the method multiple times to set more
-         * values).
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: advanced
+         * Group: common
          * 
-         * @param key the option key
-         * @param value the option value
+         * @param deadLetterRoutingKey the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder args(
-                String key,
-                Object value) {
-            doSetMultiValueProperty("args", "arg." + key, value);
+        default RabbitMQEndpointBuilder deadLetterRoutingKey(
+                String deadLetterRoutingKey) {
+            doSetProperty("deadLetterRoutingKey", deadLetterRoutingKey);
             return this;
         }
         /**
-         * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
          * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the args(String, Object)
-         * method to add a value (call the method multiple times to set more
-         * values).
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Group: advanced
+         * Default: true
+         * Group: common
          * 
-         * @param values the values
+         * @param declare the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder args(Map values) {
-            doSetMultiValueProperties("args", "arg.", values);
+        default RabbitMQEndpointBuilder declare(boolean declare) {
+            doSetProperty("declare", declare);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * If the option is true, camel declare the exchange and queue name and
+         * bind them together. If the option is false, camel won't declare the
+         * exchange and queue name on the server.
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
-         * Group: advanced
+         * Default: true
+         * Group: common
          * 
-         * @param messageConverter the value to set
+         * @param declare the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder messageConverter(
-                Object messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default RabbitMQEndpointBuilder declare(String declare) {
+            doSetProperty("declare", declare);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Group: advanced
+         * Default: true
+         * Group: common
          * 
-         * @param messageConverter the value to set
+         * @param durable the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder messageConverter(
-                String messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default RabbitMQEndpointBuilder durable(boolean durable) {
+            doSetProperty("durable", durable);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * If we are declaring a durable exchange (the exchange will survive a
+         * server restart).
          * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
-         * Group: advanced
+         * Default: true
+         * Group: common
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param durable the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder messagePropertiesConverter(
-                Object messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default RabbitMQEndpointBuilder durable(String durable) {
+            doSetProperty("durable", durable);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * The exchange type such as direct or topic.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Group: advanced
+         * Default: direct
+         * Group: common
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param exchangeType the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder messagePropertiesConverter(
-                String messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default RabbitMQEndpointBuilder exchangeType(String exchangeType) {
+            doSetProperty("exchangeType", exchangeType);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: false
-         * Group: advanced
+         * Group: common
          * 
-         * @param synchronous the value to set
+         * @param exclusive the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder synchronous(
-                boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default RabbitMQEndpointBuilder exclusive(boolean exclusive) {
+            doSetProperty("exclusive", exclusive);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * Exclusive queues may only be accessed by the current connection, and
+         * are deleted when that connection closes.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
          * 
          * Default: false
-         * Group: advanced
+         * Group: common
          * 
-         * @param synchronous the value to set
+         * @param exclusive the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointConsumerBuilder synchronous(
-                String synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default RabbitMQEndpointBuilder exclusive(String exclusive) {
+            doSetProperty("exclusive", exclusive);
             return this;
         }
-    }
-
-    /**
-     * Builder for endpoint producers for the Spring RabbitMQ component.
-     */
-    public interface RabbitMQEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedRabbitMQEndpointProducerBuilder advanced() {
-            return (AdvancedRabbitMQEndpointProducerBuilder) this;
+        /**
+         * The hostname of the running rabbitmq instance or cluster.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param hostname the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder hostname(String hostname) {
+            doSetProperty("hostname", hostname);
+            return this;
         }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
+         * Default: false
          * Group: common
          * 
-         * @param connectionFactory the value to set
+         * @param passive the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder connectionFactory(
-                Object connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default RabbitMQEndpointBuilder passive(boolean passive) {
+            doSetProperty("passive", passive);
             return this;
         }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * Passive queues depend on the queue already to be available at
+         * RabbitMQ.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param passive the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder passive(String passive) {
+            doSetProperty("passive", passive);
+            return this;
+        }
+        /**
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
          * 
          * Group: common
          * 
-         * @param connectionFactory the value to set
+         * @param portNumber the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder connectionFactory(
-                String connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default RabbitMQEndpointBuilder portNumber(int portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * Port number for the host with the running rabbitmq instance or
+         * cluster. Default value is 5672.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param portNumber the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder portNumber(String portNumber) {
+            doSetProperty("portNumber", portNumber);
+            return this;
+        }
+        /**
+         * The queue to receive messages from.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param queue the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder queue(String queue) {
+            doSetProperty("queue", queue);
+            return this;
+        }
+        /**
+         * The routing key to use when binding a consumer queue to the exchange.
+         * For producer routing keys, you set the header rabbitmq.ROUTING_KEY.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param routingKey the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder routingKey(String routingKey) {
+            doSetProperty("routingKey", routingKey);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipDlqDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipDlqDeclare(boolean skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
+            return this;
+        }
+        /**
+         * If true the producer will not declare and bind a dead letter queue.
+         * This can be used if you have also DLQ rabbitmq consumer and you want
+         * to avoid argument clashing between Producer and Consumer. This option
+         * have no effect, if DLQ configured (deadLetterExchange option is not
+         * set).
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipDlqDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipDlqDeclare(String skipDlqDeclare) {
+            doSetProperty("skipDlqDeclare", skipDlqDeclare);
+            return this;
+        }
+        /**
+         * This can be used if we need to declare the queue but not the
+         * exchange.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipExchangeDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipExchangeDeclare(
+                boolean skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
+            return this;
+        }
+        /**
+         * This can be used if we need to declare the queue but not the
+         * exchange.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipExchangeDeclare the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipExchangeDeclare(
+                String skipExchangeDeclare) {
+            doSetProperty("skipExchangeDeclare", skipExchangeDeclare);
+            return this;
+        }
+        /**
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueBind the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipQueueBind(boolean skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
+            return this;
+        }
+        /**
+         * If true the queue will not be bound to the exchange after declaring
+         * it.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param skipQueueBind the value to set
+         * @return the dsl builder
+         */
+        default RabbitMQEndpointBuilder skipQueueBind(String skipQueueBind) {
+            doSetProperty("skipQueueBind", skipQueueBind);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
          * 
          * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
          * Default: false
          * Group: common
          * 
-         * @param disableReplyTo the value to set
+         * @param skipQueueDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder disableReplyTo(
-                boolean disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default RabbitMQEndpointBuilder skipQueueDeclare(
+                boolean skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * If true the producer will not declare and bind a queue. This can be
+         * used for directing messages via an existing routing key.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
@@ -864,172 +3829,172 @@ public interface RabbitMQEndpointBuilderFactory {
          * Default: false
          * Group: common
          * 
-         * @param disableReplyTo the value to set
+         * @param skipQueueDeclare the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder disableReplyTo(
-                String disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default RabbitMQEndpointBuilder skipQueueDeclare(String skipQueueDeclare) {
+            doSetProperty("skipQueueDeclare", skipQueueDeclare);
             return this;
         }
         /**
-         * The value of a routing key to use. Default is empty which is not
-         * helpful when using the default (or any direct) exchange, but fine if
-         * the exchange is a headers exchange for instance.
+         * The vhost for the channel.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
+         * Default: /
          * Group: common
          * 
-         * @param routingKey the value to set
+         * @param vhost the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder routingKey(String routingKey) {
-            doSetProperty("routingKey", routingKey);
+        default RabbitMQEndpointBuilder vhost(String vhost) {
+            doSetProperty("vhost", vhost);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * Password for authenticated access.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Default: guest
+         * Group: security
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param password the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder testConnectionOnStartup(
-                boolean testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default RabbitMQEndpointBuilder password(String password) {
+            doSetProperty("password", password);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * Enables SSL on connection, accepted value are true, TLS and 'SSLv3.
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Group: security
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param sslProtocol the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder testConnectionOnStartup(
-                String testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default RabbitMQEndpointBuilder sslProtocol(String sslProtocol) {
+            doSetProperty("sslProtocol", sslProtocol);
             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.
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt;
+         * type.
          * 
-         * Default: false
-         * Group: producer
+         * Group: security
          * 
-         * @param lazyStartProducer the value to set
+         * @param trustManager the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
+        default RabbitMQEndpointBuilder trustManager(Object trustManager) {
+            doSetProperty("trustManager", trustManager);
             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.
+         * Configure SSL trust manager, SSL should be enabled for this option to
+         * be effective.
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option will be converted to a
+         * &lt;code&gt;javax.net.ssl.TrustManager&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: producer
+         * Group: security
          * 
-         * @param lazyStartProducer the value to set
+         * @param trustManager the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
+        default RabbitMQEndpointBuilder trustManager(String trustManager) {
+            doSetProperty("trustManager", trustManager);
             return this;
         }
         /**
-         * Specify the timeout in milliseconds to be used when waiting for a
-         * reply message when doing request/reply messaging. The default value
-         * is 5 seconds. A negative value indicates an indefinite timeout.
+         * Username in case of authenticated access.
          * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
-         * Default: 5000
-         * Group: producer
+         * Default: guest
+         * Group: security
          * 
-         * @param replyTimeout the value to set
+         * @param username the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder replyTimeout(long replyTimeout) {
-            doSetProperty("replyTimeout", replyTimeout);
+        default RabbitMQEndpointBuilder username(String username) {
+            doSetProperty("username", username);
             return this;
         }
+    }
+
+    /**
+     * Advanced builder for endpoint for the RabbitMQ component.
+     */
+    public interface AdvancedRabbitMQEndpointBuilder
+            extends
+                AdvancedRabbitMQEndpointConsumerBuilder,
+                AdvancedRabbitMQEndpointProducerBuilder {
+        default RabbitMQEndpointBuilder basic() {
+            return (RabbitMQEndpointBuilder) this;
+        }
         /**
-         * Specify the timeout in milliseconds to be used when waiting for a
-         * reply message when doing request/reply messaging. The default value
-         * is 5 seconds. A negative value indicates an indefinite timeout.
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
          * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
-         * Default: 5000
-         * Group: producer
+         * Default: false
+         * Group: advanced
          * 
-         * @param replyTimeout the value to set
+         * @param allowMessageBodySerialization the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointProducerBuilder replyTimeout(String replyTimeout) {
-            doSetProperty("replyTimeout", replyTimeout);
+        default AdvancedRabbitMQEndpointBuilder allowMessageBodySerialization(
+                boolean allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
             return this;
         }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the Spring RabbitMQ
-     * component.
-     */
-    public interface AdvancedRabbitMQEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default RabbitMQEndpointProducerBuilder basic() {
-            return (RabbitMQEndpointProducerBuilder) this;
+        /**
+         * Whether to allow Java serialization of the message body or not. If
+         * this value is true, the message body will be serialized on the
+         * producer side using Java serialization, if no type converter can
+         * handle the message body. On the consumer side, it will deserialize
+         * the message body if this value is true and the message contains a
+         * CamelSerialize header. Setting this value to true may introduce a
+         * security vulnerability as it allows an attacker to attempt to
+         * deserialize to a gadget object which could result in a RCE or other
+         * security vulnerability.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param allowMessageBodySerialization the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointBuilder allowMessageBodySerialization(
+                String allowMessageBodySerialization) {
+            doSetProperty("allowMessageBodySerialization", allowMessageBodySerialization);
+            return this;
         }
         /**
          * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
          * 
          * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
          * java.lang.Object&amp;gt;&lt;/code&gt; type.
@@ -1043,18 +4008,17 @@ public interface RabbitMQEndpointBuilderFactory {
          * @param value the option value
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder args(
-                String key,
-                Object value) {
+        default AdvancedRabbitMQEndpointBuilder args(String key, Object value) {
             doSetMultiValueProperty("args", "arg." + key, value);
             return this;
         }
         /**
          * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * different prefix is required for each: Exchange: arg.exchange. Queue:
+         * arg.queue. Binding: arg.binding. DLQ: arg.dlq.queue. DLQ binding:
+         * arg.dlq.binding. For example to declare a queue with message ttl
+         * argument:
+         * http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000.
          * 
          * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
          * java.lang.Object&amp;gt;&lt;/code&gt; type.
@@ -1067,391 +4031,328 @@ public interface RabbitMQEndpointBuilderFactory {
          * @param values the values
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder args(Map values) {
+        default AdvancedRabbitMQEndpointBuilder args(Map values) {
             doSetMultiValueProperties("args", "arg.", values);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * Connection client properties (client info used in negotiating with
+         * the server).
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
          * 
          * Group: advanced
          * 
-         * @param messageConverter the value to set
+         * @param clientProperties the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder messageConverter(
-                Object messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default AdvancedRabbitMQEndpointBuilder clientProperties(
+                Map<String, Object> clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * Connection client properties (client info used in negotiating with
+         * the server).
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
+         * java.lang.Object&amp;gt;&lt;/code&gt; type.
          * 
          * Group: advanced
          * 
-         * @param messageConverter the value to set
+         * @param clientProperties the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder messageConverter(
-                String messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default AdvancedRabbitMQEndpointBuilder clientProperties(
+                String clientProperties) {
+            doSetProperty("clientProperties", clientProperties);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
          * 
          * Group: advanced
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param connectionFactoryExceptionHandler the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder messagePropertiesConverter(
-                Object messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default AdvancedRabbitMQEndpointBuilder connectionFactoryExceptionHandler(
+                Object connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * Custom rabbitmq ExceptionHandler for ConnectionFactory.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * &lt;code&gt;com.rabbitmq.client.ExceptionHandler&lt;/code&gt; type.
          * 
          * Group: advanced
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param connectionFactoryExceptionHandler the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder messagePropertiesConverter(
-                String messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default AdvancedRabbitMQEndpointBuilder connectionFactoryExceptionHandler(
+                String connectionFactoryExceptionHandler) {
+            doSetProperty("connectionFactoryExceptionHandler", connectionFactoryExceptionHandler);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * Connection timeout.
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
+         * Default: 60000
          * Group: advanced
          * 
-         * @param synchronous the value to set
+         * @param connectionTimeout the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder synchronous(
-                boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default AdvancedRabbitMQEndpointBuilder connectionTimeout(
+                int connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * Connection timeout.
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
+         * Default: 60000
          * Group: advanced
          * 
-         * @param synchronous the value to set
+         * @param connectionTimeout the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointProducerBuilder synchronous(
-                String synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default AdvancedRabbitMQEndpointBuilder connectionTimeout(
+                String connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
             return this;
         }
-    }
-
-    /**
-     * Builder for endpoint for the Spring RabbitMQ component.
-     */
-    public interface RabbitMQEndpointBuilder
-            extends
-                RabbitMQEndpointConsumerBuilder,
-                RabbitMQEndpointProducerBuilder {
-        default AdvancedRabbitMQEndpointBuilder advanced() {
-            return (AdvancedRabbitMQEndpointBuilder) this;
-        }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
          * 
-         * Group: common
+         * Default: 5000
+         * Group: advanced
          * 
-         * @param connectionFactory the value to set
+         * @param networkRecoveryInterval the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder connectionFactory(
-                Object connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default AdvancedRabbitMQEndpointBuilder networkRecoveryInterval(
+                Integer networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
             return this;
         }
         /**
-         * The connection factory to be use. A connection factory must be
-         * configured either on the component or endpoint.
+         * Network recovery interval in milliseconds (interval used when
+         * recovering from network failure).
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.rabbit.connection.ConnectionFactory&lt;/code&gt; type.
+         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
          * 
-         * Group: common
+         * Default: 5000
+         * Group: advanced
          * 
-         * @param connectionFactory the value to set
+         * @param networkRecoveryInterval the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder connectionFactory(
-                String connectionFactory) {
-            doSetProperty("connectionFactory", connectionFactory);
+        default AdvancedRabbitMQEndpointBuilder networkRecoveryInterval(
+                String networkRecoveryInterval) {
+            doSetProperty("networkRecoveryInterval", networkRecoveryInterval);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * Connection requested channel max (max number of channels offered).
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Default: 2047
+         * Group: advanced
          * 
-         * @param disableReplyTo the value to set
+         * @param requestedChannelMax the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder disableReplyTo(boolean disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default AdvancedRabbitMQEndpointBuilder requestedChannelMax(
+                int requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
             return this;
         }
         /**
-         * Specifies whether Camel ignores the ReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the ReplyTo header. You can use this option if you want Camel to
-         * consume from a route and you do not want Camel to automatically send
-         * back a reply message because another component in your code handles
-         * the reply message. You can also use this option if you want to use
-         * Camel as a proxy between different message brokers and you want to
-         * route message from one system to another.
+         * Connection requested channel max (max number of channels offered).
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Default: 2047
+         * Group: advanced
          * 
-         * @param disableReplyTo the value to set
+         * @param requestedChannelMax the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder disableReplyTo(String disableReplyTo) {
-            doSetProperty("disableReplyTo", disableReplyTo);
+        default AdvancedRabbitMQEndpointBuilder requestedChannelMax(
+                String requestedChannelMax) {
+            doSetProperty("requestedChannelMax", requestedChannelMax);
             return this;
         }
         /**
-         * The value of a routing key to use. Default is empty which is not
-         * helpful when using the default (or any direct) exchange, but fine if
-         * the exchange is a headers exchange for instance.
+         * Connection requested frame max (max size of frame offered).
          * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Group: common
+         * Default: 0
+         * Group: advanced
          * 
-         * @param routingKey the value to set
+         * @param requestedFrameMax the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder routingKey(String routingKey) {
-            doSetProperty("routingKey", routingKey);
+        default AdvancedRabbitMQEndpointBuilder requestedFrameMax(
+                int requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * Connection requested frame max (max size of frame offered).
          * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Default: 0
+         * Group: advanced
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param requestedFrameMax the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder testConnectionOnStartup(
-                boolean testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default AdvancedRabbitMQEndpointBuilder requestedFrameMax(
+                String requestedFrameMax) {
+            doSetProperty("requestedFrameMax", requestedFrameMax);
             return this;
         }
         /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
+         * Connection requested heartbeat (heart-beat in seconds offered).
          * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
          * 
-         * Default: false
-         * Group: common
+         * Default: 60
+         * Group: advanced
          * 
-         * @param testConnectionOnStartup the value to set
+         * @param requestedHeartbeat the value to set
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder testConnectionOnStartup(
-                String testConnectionOnStartup) {
-            doSetProperty("testConnectionOnStartup", testConnectionOnStartup);
+        default AdvancedRabbitMQEndpointBuilder requestedHeartbeat(
+                int requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
             return this;
         }
-    }
-
-    /**
-     * Advanced builder for endpoint for the Spring RabbitMQ component.
-     */
-    public interface AdvancedRabbitMQEndpointBuilder
-            extends
-                AdvancedRabbitMQEndpointConsumerBuilder,
-                AdvancedRabbitMQEndpointProducerBuilder {
-        default RabbitMQEndpointBuilder basic() {
-            return (RabbitMQEndpointBuilder) this;
-        }
         /**
-         * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * Connection requested heartbeat (heart-beat in seconds offered).
          * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the args(String, Object)
-         * method to add a value (call the method multiple times to set more
-         * values).
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
          * 
+         * Default: 60
          * Group: advanced
          * 
-         * @param key the option key
-         * @param value the option value
+         * @param requestedHeartbeat the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder args(String key, Object value) {
-            doSetMultiValueProperty("args", "arg." + key, value);
+        default AdvancedRabbitMQEndpointBuilder requestedHeartbeat(
+                String requestedHeartbeat) {
+            doSetProperty("requestedHeartbeat", requestedHeartbeat);
             return this;
         }
         /**
-         * Specify arguments for configuring the different RabbitMQ concepts, a
-         * different prefix is required for each element: arg.consumer.
-         * arg.exchange. arg.queue. arg.binding. arg.dlq.exchange.
-         * arg.dlq.queue. arg.dlq.binding. For example to declare a queue with
-         * message ttl argument: args=arg.queue.x-message-ttl=60000.
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
          * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the args(String, Object)
-         * method to add a value (call the method multiple times to set more
-         * values).
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
          * 
+         * Default: 20000
          * Group: advanced
          * 
-         * @param values the values
+         * @param requestTimeout the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder args(Map values) {
-            doSetMultiValueProperties("args", "arg.", values);
+        default AdvancedRabbitMQEndpointBuilder requestTimeout(
+                long requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * Set timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds).
          * 
-         * The option is a:
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
          * 
+         * Default: 20000
          * Group: advanced
          * 
-         * @param messageConverter the value to set
+         * @param requestTimeout the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder messageConverter(
-                Object messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default AdvancedRabbitMQEndpointBuilder requestTimeout(
+                String requestTimeout) {
+            doSetProperty("requestTimeout", requestTimeout);
             return this;
         }
         /**
-         * To use a custom MessageConverter so you can be in control how to map
-         * to/from a org.springframework.amqp.core.Message.
+         * Set requestTimeoutCheckerInterval for inOut exchange.
          * 
-         * The option will be converted to a
-         * &lt;code&gt;org.springframework.amqp.support.converter.MessageConverter&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
          * 
+         * Default: 1000
          * Group: advanced
          * 
-         * @param messageConverter the value to set
+         * @param requestTimeoutCheckerInterval the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder messageConverter(
-                String messageConverter) {
-            doSetProperty("messageConverter", messageConverter);
+        default AdvancedRabbitMQEndpointBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * Set requestTimeoutCheckerInterval for inOut exchange.
          * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
          * 
+         * Default: 1000
          * Group: advanced
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param requestTimeoutCheckerInterval the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder messagePropertiesConverter(
-                Object messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default AdvancedRabbitMQEndpointBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            doSetProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
             return this;
         }
         /**
-         * To use a custom MessagePropertiesConverter so you can be in control
-         * how to map to/from a org.springframework.amqp.core.MessageProperties.
+         * 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
-         * &lt;code&gt;org.apache.camel.component.springrabbit.MessagePropertiesConverter&lt;/code&gt; type.
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
          * 
+         * Default: false
          * Group: advanced
          * 
-         * @param messagePropertiesConverter the value to set
+         * @param synchronous the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder messagePropertiesConverter(
-                String messagePropertiesConverter) {
-            doSetProperty("messagePropertiesConverter", messagePropertiesConverter);
+        default AdvancedRabbitMQEndpointBuilder 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 is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
          * 
          * Default: false
          * Group: advanced
@@ -1459,13 +4360,63 @@ public interface RabbitMQEndpointBuilderFactory {
          * @param synchronous the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder synchronous(boolean synchronous) {
+        default AdvancedRabbitMQEndpointBuilder synchronous(String synchronous) {
             doSetProperty("synchronous", synchronous);
             return this;
         }
         /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointBuilder topologyRecoveryEnabled(
+                Boolean topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * Enables connection topology recovery (should topology recovery be
+         * performed).
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Boolean&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param topologyRecoveryEnabled the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointBuilder topologyRecoveryEnabled(
+                String topologyRecoveryEnabled) {
+            doSetProperty("topologyRecoveryEnabled", topologyRecoveryEnabled);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param transferException the value to set
+         * @return the dsl builder
+         */
+        default AdvancedRabbitMQEndpointBuilder transferException(
+                boolean transferException) {
+            doSetProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * When true and an inOut Exchange failed on the consumer side send the
+         * caused Exception back in the response.
          * 
          * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
          * type.
@@ -1473,70 +4424,59 @@ public interface RabbitMQEndpointBuilderFactory {
          * Default: false
          * Group: advanced
          * 
-         * @param synchronous the value to set
+         * @param transferException the value to set
          * @return the dsl builder
          */
-        default AdvancedRabbitMQEndpointBuilder synchronous(String synchronous) {
-            doSetProperty("synchronous", synchronous);
+        default AdvancedRabbitMQEndpointBuilder transferException(
+                String transferException) {
+            doSetProperty("transferException", transferException);
             return this;
         }
     }
 
-    /**
-     * Proxy enum for <code>org.springframework.amqp.core.AcknowledgeMode</code>
-     * enum.
-     */
-    enum AcknowledgeMode {
-        NONE,
-        MANUAL,
-        AUTO;
-    }
-
     public interface RabbitMQBuilders {
         /**
-         * Spring RabbitMQ (camel-spring-rabbitmq)
-         * Send and receive messages from RabbitMQ using Spring RabbitMQ client.
+         * RabbitMQ (camel-rabbitmq)
+         * Send and receive messages from RabbitMQ instances.
          * 
          * Category: messaging
-         * Since: 3.8
-         * Maven coordinates: org.apache.camel:camel-spring-rabbitmq
+         * Since: 2.12
+         * Maven coordinates: org.apache.camel:camel-rabbitmq
          * 
-         * Syntax: <code>spring-rabbitmq:exchangeName</code>
+         * Syntax: <code>rabbitmq:exchangeName</code>
          * 
          * Path parameter: exchangeName (required)
          * The exchange name determines the exchange to which the produced
          * messages will be sent to. In the case of consumers, the exchange name
-         * determines the exchange the queue will be bound to. Note: to use
-         * default exchange then do not use empty name, but use default instead.
+         * determines the exchange the queue will be bound to.
          * 
          * @param path exchangeName
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder springRabbitmq(String path) {
-            return RabbitMQEndpointBuilderFactory.endpointBuilder("spring-rabbitmq", path);
+        default RabbitMQEndpointBuilder rabbitmq(String path) {
+            return RabbitMQEndpointBuilderFactory.endpointBuilder("rabbitmq", path);
         }
         /**
-         * Spring RabbitMQ (camel-spring-rabbitmq)
-         * Send and receive messages from RabbitMQ using Spring RabbitMQ client.
+         * RabbitMQ (camel-rabbitmq)
+         * Send and receive messages from RabbitMQ instances.
          * 
          * Category: messaging
-         * Since: 3.8
-         * Maven coordinates: org.apache.camel:camel-spring-rabbitmq
+         * Since: 2.12
+         * Maven coordinates: org.apache.camel:camel-rabbitmq
          * 
-         * Syntax: <code>spring-rabbitmq:exchangeName</code>
+         * Syntax: <code>rabbitmq:exchangeName</code>
          * 
          * Path parameter: exchangeName (required)
          * The exchange name determines the exchange to which the produced
          * messages will be sent to. In the case of consumers, the exchange name
-         * determines the exchange the queue will be bound to. Note: to use
-         * default exchange then do not use empty name, but use default instead.
+         * determines the exchange the queue will be bound to.
          * 
          * @param componentName to use a custom component name for the endpoint
          * instead of the default name
          * @param path exchangeName
          * @return the dsl builder
          */
-        default RabbitMQEndpointBuilder springRabbitmq(
+        default RabbitMQEndpointBuilder rabbitmq(
                 String componentName,
                 String path) {
             return RabbitMQEndpointBuilderFactory.endpointBuilder(componentName, path);
diff --git a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RabbitMQMultiValueTest.java b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RabbitMQMultiValueTest.java
index 80cffc3..746cbcd 100644
--- a/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RabbitMQMultiValueTest.java
+++ b/core/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RabbitMQMultiValueTest.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.builder.endpoint.dsl.RabbitMQEndpointBuilderFactory;
-import org.apache.camel.component.springrabbit.RabbitMQEndpoint;
+import org.apache.camel.component.rabbitmq.RabbitMQEndpoint;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -42,14 +42,14 @@ public class RabbitMQMultiValueTest extends ContextTestSupport {
         context.addRoutes(new EndpointRouteBuilder() {
             @Override
             public void configure() throws Exception {
-                RabbitMQEndpointBuilderFactory.RabbitMQEndpointBuilder builder = springRabbitmq("mytopic").advanced()
+                RabbitMQEndpointBuilderFactory.RabbitMQEndpointBuilder builder = rabbitmq("mytopic").advanced()
                         .args("foo", "123")
                         .args("bar", "456")
                         .args("beer", "yes").basic();
 
                 Endpoint endpoint = builder.resolve(context);
                 assertNotNull(endpoint);
-                assertEquals("spring-rabbitmq://mytopic?arg.bar=456&arg.beer=yes&arg.foo=123", endpoint.getEndpointUri());
+                assertEquals("rabbitmq://mytopic?arg.bar=456&arg.beer=yes&arg.foo=123", endpoint.getEndpointUri());
                 RabbitMQEndpoint re = assertIsInstanceOf(RabbitMQEndpoint.class, endpoint);
                 assertEquals("mytopic", re.getExchangeName());
                 Map<String, Object> args = re.getArgs();
@@ -76,12 +76,12 @@ public class RabbitMQMultiValueTest extends ContextTestSupport {
                 map.put("bar", "456");
                 map.put("beer", "yes");
 
-                RabbitMQEndpointBuilderFactory.RabbitMQEndpointBuilder builder = springRabbitmq("mytopic").advanced()
+                RabbitMQEndpointBuilderFactory.RabbitMQEndpointBuilder builder = rabbitmq("mytopic").advanced()
                         .args(map).basic();
 
                 Endpoint endpoint = builder.resolve(context);
                 assertNotNull(endpoint);
-                assertEquals("spring-rabbitmq://mytopic?arg.bar=456&arg.beer=yes&arg.foo=123", endpoint.getEndpointUri());
+                assertEquals("rabbitmq://mytopic?arg.bar=456&arg.beer=yes&arg.foo=123", endpoint.getEndpointUri());
                 RabbitMQEndpoint re = assertIsInstanceOf(RabbitMQEndpoint.class, endpoint);
                 assertEquals("mytopic", re.getExchangeName());
                 Map<String, Object> args = re.getArgs();