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

[camel] 01/02: CAMEL-14024: Remove camel-mqtt

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

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

commit cb492086ad7c2499588783d44fc01e0065dec399
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Oct 19 13:18:47 2019 +0200

    CAMEL-14024: Remove camel-mqtt
---
 apache-camel/pom.xml                               |   10 -
 apache-camel/src/main/descriptors/common-bin.xml   |    2 -
 .../org/apache/camel/catalog/CamelCatalogTest.java |   11 -
 .../decorators/messaging/MqttSegmentDecorator.java |   42 -
 ...pache.camel.component.aws.xray.SegmentDecorator |   53 -
 components/camel-mqtt/pom.xml                      |  131 -
 .../camel-mqtt/src/main/docs/mqtt-component.adoc   |  201 --
 .../apache/camel/component/mqtt/MQTTComponent.java |  100 -
 .../camel/component/mqtt/MQTTConfiguration.java    |  598 -----
 .../apache/camel/component/mqtt/MQTTConsumer.java  |   71 -
 .../apache/camel/component/mqtt/MQTTEndpoint.java  |  421 ----
 .../apache/camel/component/mqtt/MQTTProducer.java  |  113 -
 .../org/apache/camel/component/mqtt/package.html   |   27 -
 .../apache/camel/component/mqtt/MQTTBaseTest.java  |   56 -
 .../apache/camel/component/mqtt/MQTTBrigeTest.java |   85 -
 .../component/mqtt/MQTTConfigurationTest.java      |   90 -
 .../mqtt/MQTTConsumerMultipleTopicsTest.java       |   65 -
 .../camel/component/mqtt/MQTTConsumerTest.java     |   61 -
 .../mqtt/MQTTConsumerWildcardTopicsTest.java       |   71 -
 .../camel/component/mqtt/MQTTDuplicatesTest.java   |  156 --
 .../camel/component/mqtt/MQTTLoopProducerTest.java |   83 -
 .../component/mqtt/MQTTProducerReconnectTest.java  |   98 -
 .../camel/component/mqtt/MQTTProducerTest.java     |   79 -
 .../camel/component/mqtt/MQTTTestSupport.java      |   79 -
 .../camel/component/mqtt/SpringMQTTTest.java       |   35 -
 .../src/test/resources/log4j2.properties           |   28 -
 .../apache/camel/component/mqtt/SpringMQTTTest.xml |   46 -
 .../opentracing/decorators/MqttSpanDecorator.java  |   46 -
 .../org.apache.camel.opentracing.SpanDecorator     |    1 -
 .../decorators/MqttSpanDecoratorTest.java          |   60 -
 components/pom.xml                                 |    1 -
 .../builder/endpoint/EndpointBuilderFactory.java   |    1 -
 .../endpoint/dsl/MQTTEndpointBuilderFactory.java   | 2640 --------------------
 parent/pom.xml                                     |   10 -
 .../karaf/features/src/main/resources/features.xml |    8 -
 .../components-starter/camel-mqtt-starter/pom.xml  |   53 -
 .../springboot/MQTTComponentAutoConfiguration.java |  128 -
 .../springboot/MQTTComponentConfiguration.java     |   90 -
 .../src/main/resources/META-INF/LICENSE.txt        |  203 --
 .../src/main/resources/META-INF/NOTICE.txt         |   11 -
 .../additional-spring-configuration-metadata.json  |   10 -
 .../src/main/resources/META-INF/spring.factories   |   18 -
 .../src/main/resources/META-INF/spring.provides    |   17 -
 platforms/spring-boot/components-starter/pom.xml   |    1 -
 .../camel-spring-boot-dependencies/pom.xml         |   10 -
 .../apache/camel/itest/karaf/CamelMqttTest.java    |   34 -
 .../camel/itest/springboot/CamelMqttTest.java      |   48 -
 47 files changed, 6202 deletions(-)

diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index 8b5f7c8..3b0d071 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -1038,11 +1038,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
-      <artifactId>camel-mqtt</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
       <artifactId>camel-msv</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -2572,11 +2567,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
-      <artifactId>camel-mqtt-starter</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
       <artifactId>camel-msv-starter</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index 122800a..1696ff7 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -228,7 +228,6 @@
         <include>org.apache.camel:camel-mock</include>
         <include>org.apache.camel:camel-mongodb</include>
         <include>org.apache.camel:camel-mongodb-gridfs</include>
-        <include>org.apache.camel:camel-mqtt</include>
         <include>org.apache.camel:camel-msv</include>
         <include>org.apache.camel:camel-mustache</include>
         <include>org.apache.camel:camel-mvel</include>
@@ -574,7 +573,6 @@
         <include>org.apache.camel:camel-mock-starter</include>
         <include>org.apache.camel:camel-mongodb-gridfs-starter</include>
         <include>org.apache.camel:camel-mongodb-starter</include>
-        <include>org.apache.camel:camel-mqtt-starter</include>
         <include>org.apache.camel:camel-msv-starter</include>
         <include>org.apache.camel:camel-mustache-starter</include>
         <include>org.apache.camel:camel-mvel-starter</include>
diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 72ce4b7..31f813a 100644
--- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -669,17 +669,6 @@ public class CamelCatalogTest {
         assertEquals("no", result.getInvalidBoolean().get("useJson"));
         assertEquals("five", result.getInvalidInteger().get("initialDelay"));
 
-        // okay
-        result = catalog.validateEndpointProperties("mqtt:myqtt?reconnectBackOffMultiplier=2.5");
-        assertTrue(result.isSuccess());
-        assertEquals(0, result.getNumberOfErrors());
-
-        // number
-        result = catalog.validateEndpointProperties("mqtt:myqtt?reconnectBackOffMultiplier=five");
-        assertFalse(result.isSuccess());
-        assertEquals("five", result.getInvalidNumber().get("reconnectBackOffMultiplier"));
-        assertEquals(1, result.getNumberOfErrors());
-
         // unknown component
         result = catalog.validateEndpointProperties("foo:bar?me=you");
         assertTrue(result.isSuccess());
diff --git a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/messaging/MqttSegmentDecorator.java b/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/messaging/MqttSegmentDecorator.java
deleted file mode 100644
index 816cfc8..0000000
--- a/components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/messaging/MqttSegmentDecorator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.xray.decorators.messaging;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-
-public class MqttSegmentDecorator extends AbstractMessagingSegmentDecorator {
-
-    @Override
-    public String getComponent() {
-        return "mqtt";
-    }
-
-    @Override
-    public String getOperationName(Exchange exchange, Endpoint endpoint) {
-        return stripSchemeAndOptions(endpoint);
-    }
-
-    @Override
-    protected String getDestination(Exchange exchange, Endpoint endpoint) {
-        Map<String, String> queryParameters = toQueryParameters(endpoint.getEndpointUri());
-        String destination = queryParameters.get("subscribeTopicNames");
-        return null != destination ?  destination : queryParameters.get("publishTopicName");
-    }
-}
diff --git a/components/camel-aws-xray/src/main/resources/META-INF/services/org.apache.camel.component.aws.xray.SegmentDecorator b/components/camel-aws-xray/src/main/resources/META-INF/services/org.apache.camel.component.aws.xray.SegmentDecorator
deleted file mode 100644
index da456b4..0000000
--- a/components/camel-aws-xray/src/main/resources/META-INF/services/org.apache.camel.component.aws.xray.SegmentDecorator
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.camel.component.aws.xray.decorators.CqlSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.ElasticsearchSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.JdbcSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.LogSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.MongoDBSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.SqlSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.TimerSegmentDecorator
-
-org.apache.camel.component.aws.xray.decorators.http.AhcSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.HttpSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.JettySegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.NettyHttpSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.RestSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.ServletSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.http.UndertowSegmentDecorator
-
-org.apache.camel.component.aws.xray.decorators.internal.DirectSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.internal.DirectvmSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.internal.DisruptorSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.internal.DisruptorvmSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.internal.SedaSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.internal.VmSegmentDecorator
-
-org.apache.camel.component.aws.xray.decorators.messaging.AmqpSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.AwsSnsSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.AwsSqsSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.CometdSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.CometdsSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.IronmqSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.JmsSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.KafkaSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.MqttSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.PahoSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.RabbitmqSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.SjmsSegmentDecorator
-org.apache.camel.component.aws.xray.decorators.messaging.StompSegmentDecorator
diff --git a/components/camel-mqtt/pom.xml b/components/camel-mqtt/pom.xml
deleted file mode 100644
index 00362fe..0000000
--- a/components/camel-mqtt/pom.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-mqtt</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: MQTT</name>
-    <description>Camel MQTT client</description>
-
-    <properties>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.fusesource.mqtt-client</groupId>
-            <artifactId>mqtt-client</artifactId>
-            <version>${mqtt-client-version}</version>
-        </dependency>
-
-        <!-- test dependencies -->
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-spring</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.activemq</groupId>
-            <artifactId>activemq-broker</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.activemq</groupId>
-            <artifactId>activemq-mqtt</artifactId>
-            <version>${activemq-version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <forkCount>1</forkCount>
-                    <reuseForks>false</reuseForks>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-clean-plugin</artifactId>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>${basedir}/activemq-data</directory>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <!-- skip tests on Solaris using sparc CPUs -->
-    <profiles>
-        <profile>
-            <id>sparc</id>
-            <activation>
-                <os>
-                    <arch>sparc</arch>
-                </os>
-            </activation>
-            <properties>
-                <skipTests>true</skipTests>
-            </properties>
-        </profile>
-    </profiles>
-
-</project>
diff --git a/components/camel-mqtt/src/main/docs/mqtt-component.adoc b/components/camel-mqtt/src/main/docs/mqtt-component.adoc
deleted file mode 100644
index c6930da..0000000
--- a/components/camel-mqtt/src/main/docs/mqtt-component.adoc
+++ /dev/null
@@ -1,201 +0,0 @@
-[[mqtt-component]]
-= MQTT Component
-
-*Available as of Camel version 2.10*
-
-The MQTT component is used for communicating with
-http://mqtt.org[MQTT] compliant message brokers, like
-http://activemq.apache.org[Apache ActiveMQ] or
-http://mosquitto.org[Mosquitto]
-
-Maven users will need to add the following dependency to their `pom.xml`
-for this component:
-
-[source,xml]
-------------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-mqtt</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-------------------------------------------------------------
-
-== URI format
-
-[source,java]
----------------------
-mqtt://name[?options]
----------------------
-
-Where *name* is the name you want to assign the component.
-
-== Options
-
-
-
-
-// component options: START
-The MQTT component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *host* (common) | The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883 |  | String
-| *userName* (security) | Username to be used for authentication against the MQTT broker |  | String
-| *password* (security) | Password to be used for authentication against the MQTT broker |  | String
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-|===
-// component options: END
-
-
-
-
-
-
-// endpoint options: START
-The MQTT endpoint is configured using URI syntax:
-
-----
-mqtt:name
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *name* | *Required* A logical name to use which is not the topic name. |  | String
-|===
-
-
-=== Query Parameters (41 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *blockingExecutor* (common) | SSL connections perform blocking operations against internal thread pool unless you call the setBlockingExecutor method to configure that executor they will use instead. |  | Executor
-| *byDefaultRetain* (common) | The default retain policy to be used on messages sent to the MQTT broker | false | boolean
-| *cleanSession* (common) | Set to false if you want the MQTT server to persist topic subscriptions and ack positions across client sessions. Defaults to true. | false | boolean
-| *clientId* (common) | Use to set the client Id of the session. This is what an MQTT server uses to identify a session where setCleanSession(false); is being used. The id must be 23 characters or less. Defaults to auto generated id (based on your socket address, port and timestamp). |  | String
-| *connectAttemptsMax* (common) | The maximum number of reconnect attempts before an error is reported back to the client on the first attempt by the client to connect to a server. Set to -1 to use unlimited attempts. Defaults to -1. | -1 | long
-| *connectWaitInSeconds* (common) | Delay in seconds the Component will wait for a connection to be established to the MQTT broker | 10 | int
-| *disconnectWaitInSeconds* (common) | The number of seconds the Component will wait for a valid disconnect on stop() from the MQTT broker | 5 | int
-| *dispatchQueue* (common) | A HawtDispatch dispatch queue is used to synchronize access to the connection. If an explicit queue is not configured via the setDispatchQueue method, then a new queue will be created for the connection. Setting an explicit queue might be handy if you want multiple connection to share the same queue for synchronization. |  | DispatchQueue
-| *host* (common) | The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883 | tcp://127.0.0.1:1883 | URI
-| *keepAlive* (common) | Configures the Keep Alive timer in seconds. Defines the maximum time interval between messages received from a client. It enables the server to detect that the network connection to a client has dropped, without having to wait for the long TCP/IP timeout. |  | short
-| *localAddress* (common) | The local InetAddress and port to use |  | URI
-| *maxReadRate* (common) | Sets the maximum bytes per second that this transport will receive data at. This setting throttles reads so that the rate is not exceeded. Defaults to 0 which disables throttling. |  | int
-| *maxWriteRate* (common) | Sets the maximum bytes per second that this transport will send data at. This setting throttles writes so that the rate is not exceeded. Defaults to 0 which disables throttling. |  | int
-| *mqttQosPropertyName* (common) | The property name to look for on an Exchange for an individual published message. If this is set (one of AtMostOnce, AtLeastOnce or ExactlyOnce ) - then that QoS will be set on the message sent to the MQTT message broker. | MQTTQos | String
-| *mqttRetainPropertyName* (common) | The property name to look for on an Exchange for an individual published message. If this is set (expects a Boolean value) - then the retain property will be set on the message sent to the MQTT message broker. | MQTTRetain | String
-| *mqttTopicPropertyName* (common) | These a properties that are looked for in an Exchange - to publish to | MQTTTopicPropertyName | String
-| *publishTopicName* (common) | The default Topic to publish messages on | camel/mqtt/test | String
-| *qualityOfService* (common) | Quality of service level to use for topics. | AtLeastOnce | String
-| *receiveBufferSize* (common) | Sets the size of the internal socket receive buffer. Defaults to 65536 (64k) | 65536 | int
-| *reconnectAttemptsMax* (common) | The maximum number of reconnect attempts before an error is reported back to the client after a server connection had previously been established. Set to -1 to use unlimited attempts. Defaults to -1. | -1 | long
-| *reconnectBackOffMultiplier* (common) | The Exponential backoff be used between reconnect attempts. Set to 1 to disable exponential backoff. Defaults to 2. | 2.0 | double
-| *reconnectDelay* (common) | How long to wait in ms before the first reconnect attempt. Defaults to 10. | 10 | long
-| *reconnectDelayMax* (common) | The maximum amount of time in ms to wait between reconnect attempts. Defaults to 30,000. | 30000 | long
-| *sendBufferSize* (common) | Sets the size of the internal socket send buffer. Defaults to 65536 (64k) | 65536 | int
-| *sendWaitInSeconds* (common) | The maximum time the Component will wait for a receipt from the MQTT broker to acknowledge a published message before throwing an exception | 5 | int
-| *sslContext* (common) | To configure security using SSLContext configuration |  | SSLContext
-| *subscribeTopicName* (common) | *Deprecated* These are set on the Endpoint - together with properties inherited from MQTT |  | String
-| *subscribeTopicNames* (common) | A comma-delimited list of Topics to subscribe to for messages. Note that each item of this list can contain MQTT wildcards ( and/or #), in order to subscribe to topics matching a certain pattern within a hierarchy. For example, is a wildcard for all topics at a level within the hierarchy, so if a broker has topics topics/one and topics/two, then topics/ can be used to subscribe to both. A caveat to consider here is that if the broker adds topics/three,  [...]
-| *trafficClass* (common) | Sets traffic class or type-of-service octet in the IP header for packets sent from the transport. Defaults to 8 which means the traffic should be optimized for throughput. | 8 | int
-| *version* (common) | Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1 protocol version. | 3.1 | String
-| *willMessage* (common) | The Will message to send. Defaults to a zero length message. |  | String
-| *willQos* (common) | Sets the quality of service to use for the Will message. Defaults to AT_MOST_ONCE. | AtMostOnce | QoS
-| *willRetain* (common) | Set to true if you want the Will to be published with the retain option. | false | boolean
-| *willTopic* (common) | If set the server will publish the client's Will message to the specified topics if the client has an unexpected disconnection. |  | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *lazySessionCreation* (producer) | Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | boolean
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-// spring-boot-auto-configure options: START
-== Spring Boot Auto-Configuration
-
-When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
-
-[source,xml]
-----
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-mqtt-starter</artifactId>
-  <version>x.x.x</version>
-  <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-
-The component supports 5 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *camel.component.mqtt.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
-| *camel.component.mqtt.enabled* | Enable mqtt component | true | Boolean
-| *camel.component.mqtt.host* | The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883 |  | String
-| *camel.component.mqtt.password* | Password to be used for authentication against the MQTT broker |  | String
-| *camel.component.mqtt.user-name* | Username to be used for authentication against the MQTT broker |  | String
-|===
-// spring-boot-auto-configure options: END
-
-
-
-
-== Samples
-
-Sending messages:
-
-[source,java]
-----------------------------------------------------------------------
-from("direct:foo").to("mqtt:cheese?publishTopicName=test.mqtt.topic");
-----------------------------------------------------------------------
-
-Consuming messages:
-
-[source,java]
----------------------------------------------------------------------------------------------------------
-from("mqtt:bar?subscribeTopicName=test.mqtt.topic").transform(body().convertToString()).to("mock:result")
----------------------------------------------------------------------------------------------------------
-
-== Endpoints
-
-Camel supports the Message Endpoint pattern
-using the
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Endpoint.html[Endpoint]
-interface. Endpoints are usually created by a
-Component and Endpoints are usually referred to in
-the DSL via their URIs.
-
-From an Endpoint you can use the following methods
-
-* http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Endpoint.html#createProducer()[createProducer()]
-will create a
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Producer.html[Producer]
-for sending message exchanges to the endpoint
-* http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Endpoint.html#createConsumer(org.apache.camel.Processor)[createConsumer()]
-implements the Event Driven Consumer
-pattern for consuming message exchanges from the endpoint via a
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Processor.html[Processor]
-when creating a
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Consumer.html[Consumer]
-* http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Endpoint.html#createPollingConsumer()[createPollingConsumer()]
-implements the Polling Consumer pattern for
-consuming message exchanges from the endpoint via a
-http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/PollingConsumer.html[PollingConsumer]
-
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTComponent.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTComponent.java
deleted file mode 100644
index 6620f7f..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTComponent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-/**
- * MQTT Component
- */
-@Component("mqtt")
-public class MQTTComponent extends DefaultComponent {
-    private String host;
-    @Metadata(label = "security", secret = true)
-    private String userName;
-    @Metadata(label = "security", secret = true)
-    private String password;
-
-    public MQTTComponent() {
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        MQTTConfiguration configuration = new MQTTConfiguration();
-
-        if (host != null) {
-            configuration.setHost(host);
-        }
-        if (userName != null) {
-            configuration.setUserName(userName);
-        }
-        if (password != null) {
-            configuration.setPassword(password);
-        }
-
-        // and then override from parameters
-        setProperties(configuration, parameters);
-
-        MQTTEndpoint endpoint = new MQTTEndpoint(uri, this, configuration);
-        endpoint.setName(remaining);
-        return endpoint;
-    }
-
-    @Override
-    public boolean useRawUri() {
-        return true; // to prevent MQTT "+" wildcard from being lost
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    /**
-     * The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883
-     */
-    public void setHost(String host) {
-        this.host = host;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    /**
-     * Username to be used for authentication against the MQTT broker
-     */
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    /**
-     * Password to be used for authentication against the MQTT broker
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-}
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java
deleted file mode 100644
index 4c118ba..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.concurrent.Executor;
-
-import javax.net.ssl.SSLContext;
-
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.fusesource.hawtdispatch.DispatchQueue;
-import org.fusesource.hawtdispatch.transport.TcpTransport;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.QoS;
-
-@UriParams
-public class MQTTConfiguration extends MQTT {
-    public static final String MQTT_SUBSCRIBE_TOPIC = "CamelMQTTSubscribeTopic";
-    public static final String MQTT_PUBLISH_TOPIC = "CamelMQTTPublishTopic";
-
-    // inherited options from MQTT
-    @UriParam(defaultValue = "tcp://127.0.0.1:1883")
-    URI host;
-    @UriParam
-    URI localAddress;
-    @UriParam
-    SSLContext sslContext;
-    @UriParam
-    DispatchQueue dispatchQueue;
-    @UriParam
-    Executor blockingExecutor;
-    @UriParam
-    int maxReadRate;
-    @UriParam
-    int maxWriteRate;
-    @UriParam(defaultValue = "" + TcpTransport.IPTOS_THROUGHPUT)
-    int trafficClass = TcpTransport.IPTOS_THROUGHPUT;
-    @UriParam(defaultValue = "" + 1024 * 64)
-    int receiveBufferSize = 1024 * 64;
-    @UriParam(defaultValue = "" + 1024 * 64)
-    int sendBufferSize = 1024 * 64;
-    @UriParam(defaultValue = "10")
-    long reconnectDelay = 10;
-    @UriParam(defaultValue = "" + 30 * 1000)
-    long reconnectDelayMax = 30 * 1000;
-    @UriParam(defaultValue =  "2.0")
-    double reconnectBackOffMultiplier = 2.0f;
-    @UriParam(defaultValue = "-1")
-    long reconnectAttemptsMax = -1;
-    @UriParam(defaultValue = "-1")
-    long connectAttemptsMax = -1;
-    @UriParam
-    String clientId;
-    @UriParam
-    boolean cleanSession;
-    @UriParam
-    short keepAlive;
-    @UriParam
-    String willTopic;
-    @UriParam
-    String willMessage;
-    @UriParam(enums = "AtMostOnce,AtLeastOnce,ExactlyOnce", defaultValue = "AtMostOnce")
-    QoS willQos = QoS.AT_MOST_ONCE;
-    @UriParam
-    boolean willRetain;
-    @UriParam(defaultValue = "3.1")
-    String version;
-    @UriParam(label = "producer,advanced", defaultValue = "true")
-    private boolean lazySessionCreation = true;
-
-    /**
-     * These a properties that are looked for in an Exchange - to publish to
-     */
-    @UriParam(defaultValue = "MQTTTopicPropertyName")
-    private String mqttTopicPropertyName = "MQTTTopicPropertyName";
-    @UriParam(defaultValue = "MQTTRetain")
-    private String mqttRetainPropertyName = "MQTTRetain";
-    @UriParam(defaultValue = "MQTTQos")
-    private String mqttQosPropertyName = "MQTTQos";
-
-    /**
-     * These are set on the Endpoint - together with properties inherited from MQTT
-     */
-    @UriParam
-    @Deprecated
-    private String subscribeTopicName = "";
-    @UriParam
-    private String subscribeTopicNames = "";
-    @UriParam(defaultValue = "camel/mqtt/test")
-    private String publishTopicName = "camel/mqtt/test";
-    @UriParam(defaultValue = "10")
-    private int connectWaitInSeconds = 10;
-    @UriParam(defaultValue = "5")
-    private int disconnectWaitInSeconds = 5;
-    @UriParam(defaultValue = "5")
-    private int sendWaitInSeconds = 5;
-    @UriParam
-    private boolean byDefaultRetain;
-    @UriParam(enums = "AtMostOnce,AtLeastOnce,ExactlyOnce", defaultValue = "AtLeastOnce")
-    private String qualityOfService = QoS.AT_LEAST_ONCE.name();
-    private QoS qos = QoS.AT_LEAST_ONCE;
-
-    public String getQualityOfService() {
-        return qualityOfService;
-    }
-
-    /**
-     * Quality of service level to use for topics.
-     */
-    public void setQualityOfService(String qualityOfService) {
-        this.qos = getQoS(qualityOfService);
-        this.qualityOfService = qualityOfService;
-    }
-
-    public QoS getQoS() {
-        return qos;
-    }
-
-    @Deprecated
-    public String getSubscribeTopicName() {
-        return subscribeTopicName;
-    }
-
-    /**
-     * The name of the Topic to subscribe to for messages.
-     */
-    @Deprecated
-    public void setSubscribeTopicName(String subscribeTopicName) {
-        this.subscribeTopicName = subscribeTopicName;
-    }
-
-    public String getSubscribeTopicNames() {
-        return subscribeTopicNames;
-    }
-
-    /**
-     * A comma-delimited list of Topics to subscribe to for messages.
-     * Note that each item of this list can contain MQTT wildcards (+ and/or #), in order to subscribe
-     * to topics matching a certain pattern within a hierarchy.
-     * For example, + is a wildcard for all topics at a level within the hierarchy,
-     * so if a broker has topics topics/one and topics/two, then topics/+ can be used to subscribe to both.
-     * A caveat to consider here is that if the broker adds topics/three, the route would also begin to receive messages from that topic.
-     */
-    public void setSubscribeTopicNames(String subscribeTopicNames) {
-        this.subscribeTopicNames = subscribeTopicNames;
-    }
-
-    public String getPublishTopicName() {
-        return publishTopicName;
-    }
-
-    /**
-     * The default Topic to publish messages on
-     */
-    public void setPublishTopicName(String publishTopicName) {
-        this.publishTopicName = publishTopicName;
-    }
-
-    /**
-     * Please use MQTT_SUBSCRIBE_TOPIC and MQTT_PUBLISH_TOPIC to set or get the topic name
-     */
-    @Deprecated
-    public String getMqttTopicPropertyName() {
-        return mqttTopicPropertyName;
-    }
-
-    /**
-     * Please use MQTT_SUBSCRIBE_TOPIC and MQTT_PUBLISH_TOPIC to set or get the topic name
-     */
-    @Deprecated
-    public void setMqttTopicPropertyName(String mqttTopicPropertyName) {
-        this.mqttTopicPropertyName = mqttTopicPropertyName;
-    }
-
-    public String getMqttRetainPropertyName() {
-        return mqttRetainPropertyName;
-    }
-
-    /**
-     * The property name to look for on an Exchange for an individual published message.
-     * If this is set (expects a Boolean value) - then the retain property will be set on the message sent to the MQTT message broker.
-     */
-    public void setMqttRetainPropertyName(String mqttRetainPropertyName) {
-        this.mqttRetainPropertyName = mqttRetainPropertyName;
-    }
-
-    public String getMqttQosPropertyName() {
-        return mqttQosPropertyName;
-    }
-
-    /**
-     * The property name to look for on an Exchange for an individual published message.
-     * If this is set (one of AtMostOnce, AtLeastOnce or ExactlyOnce ) - then that QoS will be set on the message sent to the MQTT message broker.
-     */
-    public void setMqttQosPropertyName(String mqttQosPropertyName) {
-        this.mqttQosPropertyName = mqttQosPropertyName;
-    }
-
-    public int getConnectWaitInSeconds() {
-        return connectWaitInSeconds;
-    }
-
-    /**
-     * Delay in seconds the Component will wait for a connection to be established to the MQTT broker
-     */
-    public void setConnectWaitInSeconds(int connectWaitInSeconds) {
-        this.connectWaitInSeconds = connectWaitInSeconds;
-    }
-
-    public int getDisconnectWaitInSeconds() {
-        return disconnectWaitInSeconds;
-    }
-
-    /**
-     * The number of seconds the Component will wait for a valid disconnect on stop() from the MQTT broker
-     */
-    public void setDisconnectWaitInSeconds(int disconnectWaitInSeconds) {
-        this.disconnectWaitInSeconds = disconnectWaitInSeconds;
-    }
-
-    public int getSendWaitInSeconds() {
-        return sendWaitInSeconds;
-    }
-
-    /**
-     * The maximum time the Component will wait for a receipt from the MQTT broker to acknowledge a published message before throwing an exception
-     */
-    public void setSendWaitInSeconds(int sendWaitInSeconds) {
-        this.sendWaitInSeconds = sendWaitInSeconds;
-    }
-
-    public boolean isByDefaultRetain() {
-        return byDefaultRetain;
-    }
-
-    /**
-     * The default retain policy to be used on messages sent to the MQTT broker
-     */
-    public void setByDefaultRetain(boolean byDefaultRetain) {
-        this.byDefaultRetain = byDefaultRetain;
-    }
-
-    static QoS getQoS(String qualityOfService) {
-        for (QoS q : QoS.values()) {
-            if (q.name().equalsIgnoreCase(qualityOfService)) {
-                return q;
-            }
-        }
-        if (qualityOfService.equalsIgnoreCase("ATMOSTONCE")) {
-            return QoS.AT_MOST_ONCE;
-        }
-        if (qualityOfService.equalsIgnoreCase("EXACTLYONCE")) {
-            return QoS.EXACTLY_ONCE;
-        }
-        if (qualityOfService.equalsIgnoreCase("ATLEASTONCE")) {
-            return QoS.AT_LEAST_ONCE;
-        }
-        throw new IllegalArgumentException("There is no QoS with name " + qualityOfService);
-    }
-
-    /**
-     *  Use to set the client Id of the session.
-     *  This is what an MQTT server uses to identify a session where setCleanSession(false); is being used.
-     *  The id must be 23 characters or less. Defaults to auto generated id (based on your socket address, port and timestamp).
-     */
-    @Override
-    public void setClientId(String clientId) {
-        super.setClientId(clientId);
-    }
-
-    /**
-     * Set to false if you want the MQTT server to persist topic subscriptions and ack positions across client sessions. Defaults to true.
-     */
-    @Override
-    public void setCleanSession(boolean cleanSession) {
-        super.setCleanSession(cleanSession);
-    }
-
-    /**
-     * Configures the Keep Alive timer in seconds. Defines the maximum time interval between messages received from a client.
-     * It enables the server to detect that the network connection to a client has dropped, without having to wait for the long TCP/IP timeout.
-     */
-    @Override
-    public void setKeepAlive(short keepAlive) {
-        super.setKeepAlive(keepAlive);
-    }
-
-    /**
-     * Password to be used for authentication against the MQTT broker
-     */
-    @Override
-    public void setPassword(String password) {
-        super.setPassword(password);
-    }
-
-    /**
-     * Username to be used for authentication against the MQTT broker
-     */
-    @Override
-    public void setUserName(String userName) {
-        super.setUserName(userName);
-    }
-
-    /**
-     * The Will message to send. Defaults to a zero length message.
-     */
-    @Override
-    public void setWillMessage(String willMessage) {
-        super.setWillMessage(willMessage);
-    }
-
-    /**
-     * Sets the quality of service to use for the Will message. Defaults to AT_MOST_ONCE.
-     */
-    @Override
-    public void setWillQos(QoS willQos) {
-        super.setWillQos(willQos);
-    }
-
-    /**
-     * Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1 protocol version.
-     */
-    @Override
-    public void setVersion(String version) {
-        super.setVersion(version);
-    }
-
-    @Override
-    public String getVersion() {
-        return super.getVersion();
-    }
-
-    /**
-     * Set to true if you want the Will to be published with the retain option.
-     */
-    @Override
-    public void setWillRetain(boolean willRetain) {
-        super.setWillRetain(willRetain);
-    }
-
-    @Override
-    public boolean isWillRetain() {
-        return super.isWillRetain();
-    }
-
-    /**
-     * If set the server will publish the client's Will message to the specified topics if the client has an unexpected disconnection.
-     */
-    @Override
-    public void setWillTopic(String willTopic) {
-        super.setWillTopic(willTopic);
-    }
-
-    @Override
-    public Executor getBlockingExecutor() {
-        return super.getBlockingExecutor();
-    }
-
-    /**
-     * SSL connections perform blocking operations against internal thread pool unless you call the setBlockingExecutor method to configure that executor they will use instead.
-     */
-    @Override
-    public void setBlockingExecutor(Executor blockingExecutor) {
-        super.setBlockingExecutor(blockingExecutor);
-    }
-
-    @Override
-    public DispatchQueue getDispatchQueue() {
-        return super.getDispatchQueue();
-    }
-
-    /**
-     * A HawtDispatch dispatch queue is used to synchronize access to the connection.
-     * If an explicit queue is not configured via the setDispatchQueue method, then a new queue will be created for the connection.
-     * Setting an explicit queue might be handy if you want multiple connection to share the same queue for synchronization.
-     */
-    @Override
-    public void setDispatchQueue(DispatchQueue dispatchQueue) {
-        super.setDispatchQueue(dispatchQueue);
-    }
-
-    @Override
-    public URI getLocalAddress() {
-        return super.getLocalAddress();
-    }
-
-    /**
-     * The local InetAddress and port to use
-     */
-    @Override
-    public void setLocalAddress(String localAddress) throws URISyntaxException {
-        super.setLocalAddress(localAddress);
-    }
-
-    @Override
-    public void setLocalAddress(URI localAddress) {
-        super.setLocalAddress(localAddress);
-    }
-
-    @Override
-    public int getMaxReadRate() {
-        return super.getMaxReadRate();
-    }
-
-    /**
-     * Sets the maximum bytes per second that this transport will receive data at.
-     * This setting throttles reads so that the rate is not exceeded. Defaults to 0 which disables throttling.
-     */
-    @Override
-    public void setMaxReadRate(int maxReadRate) {
-        super.setMaxReadRate(maxReadRate);
-    }
-
-    @Override
-    public int getMaxWriteRate() {
-        return super.getMaxWriteRate();
-    }
-
-    /**
-     * Sets the maximum bytes per second that this transport will send data at.
-     * This setting throttles writes so that the rate is not exceeded. Defaults to 0 which disables throttling.
-     */
-    @Override
-    public void setMaxWriteRate(int maxWriteRate) {
-        super.setMaxWriteRate(maxWriteRate);
-    }
-
-    @Override
-    public int getReceiveBufferSize() {
-        return super.getReceiveBufferSize();
-    }
-
-    /**
-     * Sets the size of the internal socket receive buffer. Defaults to 65536 (64k)
-     */
-    @Override
-    public void setReceiveBufferSize(int receiveBufferSize) {
-        super.setReceiveBufferSize(receiveBufferSize);
-    }
-
-    @Override
-    public URI getHost() {
-        return super.getHost();
-    }
-
-    /**
-     * The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883
-     */
-    @Override
-    public void setHost(String host) throws URISyntaxException {
-        super.setHost(host);
-    }
-
-    /**
-     * The URI of the MQTT broker to connect too - this component also supports SSL - e.g. ssl://127.0.0.1:8883
-     */
-    @Override
-    public void setHost(URI host) {
-        super.setHost(host);
-    }
-
-    @Override
-    public int getSendBufferSize() {
-        return super.getSendBufferSize();
-    }
-
-    /**
-     *  Sets the size of the internal socket send buffer. Defaults to 65536 (64k)
-     */
-    @Override
-    public void setSendBufferSize(int sendBufferSize) {
-        super.setSendBufferSize(sendBufferSize);
-    }
-
-    @Override
-    public SSLContext getSslContext() {
-        return super.getSslContext();
-    }
-
-    /**
-     * To configure security using SSLContext configuration
-     */
-    @Override
-    public void setSslContext(SSLContext sslContext) {
-        super.setSslContext(sslContext);
-    }
-
-    @Override
-    public int getTrafficClass() {
-        return super.getTrafficClass();
-    }
-
-    /**
-     * Sets traffic class or type-of-service octet in the IP header for packets sent from the transport.
-     * Defaults to 8 which means the traffic should be optimized for throughput.
-     */
-    @Override
-    public void setTrafficClass(int trafficClass) {
-        super.setTrafficClass(trafficClass);
-    }
-
-    @Override
-    public long getConnectAttemptsMax() {
-        return super.getConnectAttemptsMax();
-    }
-
-    /**
-     * The maximum number of reconnect attempts before an error is reported back to the client on the first attempt
-     * by the client to connect to a server. Set to -1 to use unlimited attempts. Defaults to -1.
-     */
-    @Override
-    public void setConnectAttemptsMax(long connectAttemptsMax) {
-        super.setConnectAttemptsMax(connectAttemptsMax);
-    }
-
-    @Override
-    public long getReconnectAttemptsMax() {
-        return super.getReconnectAttemptsMax();
-    }
-
-    /**
-     * The maximum number of reconnect attempts before an error is reported back to the client after a server
-     * connection had previously been established. Set to -1 to use unlimited attempts. Defaults to -1.
-     */
-    @Override
-    public void setReconnectAttemptsMax(long reconnectAttemptsMax) {
-        super.setReconnectAttemptsMax(reconnectAttemptsMax);
-    }
-
-    @Override
-    public double getReconnectBackOffMultiplier() {
-        return super.getReconnectBackOffMultiplier();
-    }
-
-    /**
-     * The Exponential backoff be used between reconnect attempts. Set to 1 to disable exponential backoff. Defaults to 2.
-     */
-    @Override
-    public void setReconnectBackOffMultiplier(double reconnectBackOffMultiplier) {
-        super.setReconnectBackOffMultiplier(reconnectBackOffMultiplier);
-    }
-
-    @Override
-    public long getReconnectDelay() {
-        return super.getReconnectDelay();
-    }
-
-    /**
-     * How long to wait in ms before the first reconnect attempt. Defaults to 10.
-     */
-    @Override
-    public void setReconnectDelay(long reconnectDelay) {
-        super.setReconnectDelay(reconnectDelay);
-    }
-
-    @Override
-    public long getReconnectDelayMax() {
-        return super.getReconnectDelayMax();
-    }
-
-    /**
-     * The maximum amount of time in ms to wait between reconnect attempts. Defaults to 30,000.
-     */
-    @Override
-    public void setReconnectDelayMax(long reconnectDelayMax) {
-        super.setReconnectDelayMax(reconnectDelayMax);
-    }
-
-    public boolean isLazySessionCreation() {
-        return lazySessionCreation;
-    }
-
-    /**
-     * Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.
-     */
-    public void setLazySessionCreation(boolean lazySessionCreation) {
-        this.lazySessionCreation = lazySessionCreation;
-    }
-}
-
-
-
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConsumer.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConsumer.java
deleted file mode 100644
index 5a2367b..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConsumer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.support.DefaultConsumer;
-
-public class MQTTConsumer extends DefaultConsumer {
-
-    public MQTTConsumer(MQTTEndpoint endpoint, Processor processor) {
-        super(endpoint, processor);
-    }
-
-    @Override
-    public MQTTEndpoint getEndpoint() {
-        return (MQTTEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        getEndpoint().addConsumer(this);
-        if (!getEndpoint().isConnected()) {
-            getEndpoint().connect();
-        }
-        super.doStart();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        getEndpoint().removeConsumer(this);
-        super.doStop();
-    }
-
-    void processExchange(final Exchange exchange) {
-        boolean sync = true;
-        try {
-            sync = getAsyncProcessor().process(exchange, new AsyncCallback() {
-                @Override
-                public void done(boolean doneSync) {
-                    if (exchange.getException() != null) {
-                        getExceptionHandler().handleException("Error processing exchange.", exchange, exchange.getException());
-                    }
-                }
-            });
-        } catch (Throwable e) {
-            exchange.setException(e);
-        }
-
-        if (sync) {
-            if (exchange.getException() != null) {
-                getExceptionHandler().handleException("Error processing exchange.", exchange, exchange.getException());
-            }
-        }
-    }
-}
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTEndpoint.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTEndpoint.java
deleted file mode 100644
index 43bb46e..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTEndpoint.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.camel.AsyncEndpoint;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.DefaultEndpoint;
-import org.fusesource.hawtbuf.Buffer;
-import org.fusesource.hawtbuf.UTF8Buffer;
-import org.fusesource.hawtdispatch.Task;
-import org.fusesource.mqtt.client.Callback;
-import org.fusesource.mqtt.client.CallbackConnection;
-import org.fusesource.mqtt.client.Listener;
-import org.fusesource.mqtt.client.Promise;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.fusesource.mqtt.client.Tracer;
-import org.fusesource.mqtt.codec.CONNACK;
-import org.fusesource.mqtt.codec.CONNECT;
-import org.fusesource.mqtt.codec.DISCONNECT;
-import org.fusesource.mqtt.codec.MQTTFrame;
-import org.fusesource.mqtt.codec.PINGREQ;
-import org.fusesource.mqtt.codec.PINGRESP;
-import org.fusesource.mqtt.codec.PUBACK;
-import org.fusesource.mqtt.codec.PUBCOMP;
-import org.fusesource.mqtt.codec.PUBLISH;
-import org.fusesource.mqtt.codec.PUBREC;
-import org.fusesource.mqtt.codec.PUBREL;
-import org.fusesource.mqtt.codec.SUBACK;
-import org.fusesource.mqtt.codec.SUBSCRIBE;
-import org.fusesource.mqtt.codec.UNSUBSCRIBE;
-
-/**
- * Component for communicating with MQTT M2M message brokers using FuseSource MQTT Client.
- */
-@UriEndpoint(firstVersion = "2.10.0", scheme = "mqtt", title = "MQTT", syntax = "mqtt:name", label = "messaging,iot")
-public class MQTTEndpoint extends DefaultEndpoint implements AsyncEndpoint {
-
-    private static final int PUBLISH_MAX_RECONNECT_ATTEMPTS = 3;
-
-    private CallbackConnection connection;
-    private volatile boolean connected;
-    private final List<MQTTConsumer> consumers = new CopyOnWriteArrayList<>();
-
-    @UriPath @Metadata(required = true)
-    private String name;
-
-    @UriParam
-    private final MQTTConfiguration configuration;
-
-    public MQTTEndpoint(final String uri, MQTTComponent component, MQTTConfiguration properties) {
-        super(uri, component);
-        this.configuration = properties;
-        if (log.isTraceEnabled()) {
-            configuration.setTracer(new Tracer() {
-                @Override
-                public void debug(String message, Object...args) {
-                    log.trace("tracer.debug() " + this + ": uri=" + uri + ", message=" + String.format(message, args));
-                }
-
-                @Override
-                public void onSend(MQTTFrame frame) {
-                    String decoded = null;
-                    try {
-                        switch (frame.messageType()) {
-                        case PINGREQ.TYPE:
-                            decoded = new PINGREQ().decode(frame).toString();
-                            break;
-                        case PINGRESP.TYPE:
-                            decoded = new PINGRESP().decode(frame).toString();
-                            break;
-                        case CONNECT.TYPE:
-                            decoded = new CONNECT().decode(frame).toString();
-                            break;
-                        case DISCONNECT.TYPE:
-                            decoded = new DISCONNECT().decode(frame).toString();
-                            break;
-                        case SUBSCRIBE.TYPE:
-                            decoded = new SUBSCRIBE().decode(frame).toString();
-                            break;
-                        case UNSUBSCRIBE.TYPE:
-                            decoded = new UNSUBSCRIBE().decode(frame).toString();
-                            break;
-                        case PUBLISH.TYPE:
-                            decoded = new PUBLISH().decode(frame).toString();
-                            break;
-                        case PUBACK.TYPE:
-                            decoded = new PUBACK().decode(frame).toString();
-                            break;
-                        case PUBREC.TYPE:
-                            decoded = new PUBREC().decode(frame).toString();
-                            break;
-                        case PUBREL.TYPE:
-                            decoded = new PUBREL().decode(frame).toString();
-                            break;
-                        case PUBCOMP.TYPE:
-                            decoded = new PUBCOMP().decode(frame).toString();
-                            break;
-                        case CONNACK.TYPE:
-                            decoded = new CONNACK().decode(frame).toString();
-                            break;
-                        case SUBACK.TYPE:
-                            decoded = new SUBACK().decode(frame).toString();
-                            break;
-                        default:
-                            decoded = frame.toString();
-                        }
-                    } catch (Throwable e) {
-                        decoded = frame.toString();
-                    }
-                    log.trace("tracer.onSend() " + this + ":  uri=" + uri + ", frame=" + decoded);
-                }
-
-                @Override
-                public void onReceive(MQTTFrame frame) {
-                    String decoded = null;
-                    try {
-                        switch (frame.messageType()) {
-                        case PINGREQ.TYPE:
-                            decoded = new PINGREQ().decode(frame).toString();
-                            break;
-                        case PINGRESP.TYPE:
-                            decoded = new PINGRESP().decode(frame).toString();
-                            break;
-                        case CONNECT.TYPE:
-                            decoded = new CONNECT().decode(frame).toString();
-                            break;
-                        case DISCONNECT.TYPE:
-                            decoded = new DISCONNECT().decode(frame).toString();
-                            break;
-                        case SUBSCRIBE.TYPE:
-                            decoded = new SUBSCRIBE().decode(frame).toString();
-                            break;
-                        case UNSUBSCRIBE.TYPE:
-                            decoded = new UNSUBSCRIBE().decode(frame).toString();
-                            break;
-                        case PUBLISH.TYPE:
-                            decoded = new PUBLISH().decode(frame).toString();
-                            break;
-                        case PUBACK.TYPE:
-                            decoded = new PUBACK().decode(frame).toString();
-                            break;
-                        case PUBREC.TYPE:
-                            decoded = new PUBREC().decode(frame).toString();
-                            break;
-                        case PUBREL.TYPE:
-                            decoded = new PUBREL().decode(frame).toString();
-                            break;
-                        case PUBCOMP.TYPE:
-                            decoded = new PUBCOMP().decode(frame).toString();
-                            break;
-                        case CONNACK.TYPE:
-                            decoded = new CONNACK().decode(frame).toString();
-                            break;
-                        case SUBACK.TYPE:
-                            decoded = new SUBACK().decode(frame).toString();
-                            break;
-                        default:
-                            decoded = frame.toString();
-                        }
-                    } catch (Throwable e) {
-                        decoded = frame.toString();
-                    }
-                    log.trace("tracer.onReceive() " + this + ":  uri=" + uri + ", frame=" + decoded);
-                }
-            });
-        }
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        MQTTConsumer answer = new MQTTConsumer(this, processor);
-        configureConsumer(answer);
-        return answer;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new MQTTProducer(this);
-    }
-
-    public MQTTConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * A logical name to use which is not the topic name.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        createConnection();
-        connect();
-    }
-
-    protected void createConnection() {
-        if (connection != null) {
-            // In connect(), in the connection.connect() callback, onFailure() doesn't seem to ever be called, so forcing the disconnect here.
-            // Without this, the fusesource MQTT client seems to be holding the old connection object, and connection contention can ensue.
-            connection.disconnect(null);
-        }
-
-        connection = configuration.callbackConnection();
-
-        connection.listener(new Listener() {
-            public void onConnected() {
-                connected = true;
-                log.info("MQTT Connection connected to {}", configuration.getHost());
-            }
-
-            public void onDisconnected() {
-                // no connected = false required here because the MQTT client should trigger its own reconnect;
-                // setting connected = false would make the publish() method to launch a new connection while the original
-                // one is still reconnecting, likely leading to duplicate messages as observed in CAMEL-9092;
-                // if retries are exhausted and it desists, we should get a callback on onFailure, and then we can set
-                // connected = false safely
-                log.debug("MQTT Connection disconnected from {}", configuration.getHost());
-            }
-
-            public void onPublish(UTF8Buffer topic, Buffer body, Runnable ack) {
-                if (!consumers.isEmpty()) {
-                    Exchange exchange = createExchange();
-                    exchange.getIn().setBody(body.toByteArray());
-                    exchange.getIn().setHeader(MQTTConfiguration.MQTT_SUBSCRIBE_TOPIC, topic.toString());
-                    for (MQTTConsumer consumer : consumers) {
-                        consumer.processExchange(exchange);
-                    }
-                }
-                if (ack != null) {
-                    ack.run();
-                }
-            }
-
-            public void onFailure(Throwable value) {
-                // mark this connection as disconnected so we force re-connect
-                connected = false;
-                log.warn("Connection to " + configuration.getHost() + " failure due " + value.getMessage() + ". Forcing a disconnect to re-connect on next attempt.");
-                connection.disconnect(new Callback<Void>() {
-                    public void onSuccess(Void value) {
-                    }
-
-                    public void onFailure(Throwable e) {
-                        log.debug("Failed to disconnect from " + configuration.getHost() + ". This exception is ignored.", e);
-                    }
-                });
-            }
-        });
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (connection != null && connected) {
-            final Promise<Void> promise = new Promise<>();
-            connection.getDispatchQueue().execute(new Task() {
-                @Override
-                public void run() {
-                    connection.disconnect(new Callback<Void>() {
-                        public void onSuccess(Void value) {
-                            connected = false;
-                            promise.onSuccess(value);
-                        }
-                        public void onFailure(Throwable value) {
-                            promise.onFailure(value);
-                        }
-                    });
-                }
-            });
-
-            promise.await(configuration.getDisconnectWaitInSeconds(), TimeUnit.SECONDS);
-        }
-    }
-
-    void connect() throws Exception {
-        final Promise<Object> promise = new Promise<>();
-        connection.connect(new Callback<Void>() {
-            public void onSuccess(Void value) {
-                log.debug("Connected to {}", configuration.getHost());
-
-                Topic[] topics = createSubscribeTopics();
-                if (topics != null && topics.length > 0) {
-                    connection.subscribe(topics, new Callback<byte[]>() {
-                        public void onSuccess(byte[] value) {
-                            promise.onSuccess(value);
-                            connected = true;
-                        }
-
-                        public void onFailure(Throwable value) {
-                            log.debug("Failed to subscribe", value);
-                            promise.onFailure(value);
-                            connection.disconnect(null);
-                            connected = false;
-                        }
-                    });
-                } else {
-                    promise.onSuccess(value);
-                    connected = true;
-                }
-
-            }
-
-            public void onFailure(Throwable value) {  // this doesn't appear to ever be called
-                log.warn("Failed to connect to " + configuration.getHost() + " due " + value.getMessage());
-                promise.onFailure(value);
-                connection.disconnect(null);
-                connected = false;
-            }
-        });
-        log.info("Connecting to {} using {} seconds timeout", configuration.getHost(), configuration.getConnectWaitInSeconds());
-        promise.await(configuration.getConnectWaitInSeconds(), TimeUnit.SECONDS);
-    }
-
-    Topic[] createSubscribeTopics() {
-        String subscribeTopicList = configuration.getSubscribeTopicNames();
-        if (subscribeTopicList != null && !subscribeTopicList.isEmpty()) {
-            String[] topicNames = subscribeTopicList.split(",");
-            Topic[] topics = new Topic[topicNames.length];
-            for (int i = 0; i < topicNames.length; i++) {
-                topics[i] = new Topic(topicNames[i].trim(), configuration.getQoS());
-            }
-            return topics;
-        } else { // fall back on singular topic name
-            String subscribeTopicName = configuration.getSubscribeTopicName();
-            subscribeTopicName = subscribeTopicName != null ? subscribeTopicName.trim() : null;
-            if (subscribeTopicName != null && !subscribeTopicName.isEmpty()) {
-                Topic[] topics = {new Topic(subscribeTopicName, configuration.getQoS())};
-                return topics;
-            }
-        }
-        log.warn("No topic subscriptions were specified in configuration");
-        return null;
-    }
-
-    boolean isConnected() {
-        return connected;
-    }
- 
-    void publish(final String topic, final byte[] payload, final QoS qoS, final boolean retain, final Callback<Void> callback) throws Exception {
-        // if not connected then create a new connection to re-connect
-        boolean done = isConnected();
-        int attempt = 0;
-        TimeoutException timeout = null;
-        while (!done && attempt <= PUBLISH_MAX_RECONNECT_ATTEMPTS) {
-            attempt++;
-            try {
-                log.warn("#{} attempt to re-create connection to {} before publishing", attempt, configuration.getHost());
-                createConnection();
-                connect();
-            } catch (TimeoutException e) {
-                timeout = e;
-                log.debug("Timed out after {} seconds after {} attempt to re-create connection to {}",
-                        new Object[]{configuration.getConnectWaitInSeconds(), attempt, configuration.getHost()});
-            } catch (Throwable e) {
-                // other kind of error then exit asap
-                callback.onFailure(e);
-                return;
-            }
-
-            done = isConnected();
-        }
-
-        if (attempt > 3 && !isConnected()) {
-            log.warn("Cannot re-connect to {} after {} attempts", configuration.getHost(), attempt);
-            callback.onFailure(timeout);
-            return;
-        }
-
-        connection.getDispatchQueue().execute(new Task() {
-            @Override
-            public void run() {
-                log.debug("Publishing to {}", configuration.getHost());
-                connection.publish(topic, payload, qoS, retain, callback);
-            }
-        });
-    }
-
-    void addConsumer(MQTTConsumer consumer) {
-        consumers.add(consumer);
-    }
-
-    void removeConsumer(MQTTConsumer consumer) {
-        consumers.remove(consumer);
-    }
-
-}
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTProducer.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTProducer.java
deleted file mode 100644
index 1a5b922..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTProducer.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.support.DefaultAsyncProducer;
-import org.fusesource.mqtt.client.Callback;
-import org.fusesource.mqtt.client.QoS;
-
-public class MQTTProducer extends DefaultAsyncProducer implements Processor {
-
-    private final MQTTEndpoint mqttEndpoint;
-
-    public MQTTProducer(MQTTEndpoint mqttEndpoint) {
-        super(mqttEndpoint);
-        this.mqttEndpoint = mqttEndpoint;
-    }
-    
-    @Override
-    public boolean process(final Exchange exchange, final AsyncCallback callback) {
-        if (!mqttEndpoint.isConnected()) {
-            try {
-                ensureConnected();
-            } catch (Exception e) {
-                exchange.setException(e);
-                callback.done(true);
-                return true;
-            }
-        }
-
-        byte[] body = exchange.getIn().getBody(byte[].class);
-        if (body != null) {
-            MQTTConfiguration configuration = mqttEndpoint.getConfiguration();
-            boolean retain = exchange.getProperty(configuration.getMqttRetainPropertyName(), configuration.isByDefaultRetain(), Boolean.class);
-
-            QoS qoS = configuration.getQoS();
-            Object qoSValue = exchange.getProperty(configuration.getMqttQosPropertyName());
-            if (qoSValue != null) {
-                qoS = MQTTConfiguration.getQoS(qoSValue.toString());
-            }
-
-            // where should we publish to
-            String topicName = configuration.getPublishTopicName();
-            // get the topic name by using the header of MQTT_PUBLISH_TOPIC
-            Object topicValue = exchange.getIn().getHeader(MQTTConfiguration.MQTT_PUBLISH_TOPIC);
-            if (topicValue != null) {
-                topicName = topicValue.toString();
-            }
-            final String name = topicName;
-
-            try {
-                log.debug("Publishing to {}", name);
-                mqttEndpoint.publish(name, body, qoS, retain, new Callback<Void>() {
-                    @Override
-                    public void onSuccess(Void aVoid) {
-                        log.trace("onSuccess from {}", name);
-                        callback.done(false);
-                    }
-
-                    @Override
-                    public void onFailure(Throwable throwable) {
-                        log.trace("onFailure from {}", name);
-                        exchange.setException(throwable);
-                        callback.done(false);
-                    }
-                });
-            } catch (Exception e) {
-                exchange.setException(e);
-                callback.done(true);
-                return true;
-            }
-
-            // we continue async, as the mqtt endpoint will invoke the callback when its done
-            return false;
-        } else {
-            // no data to send so we are done
-            log.trace("No data to publish");
-            callback.done(true);
-            return true;
-        }
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        if (!mqttEndpoint.getConfiguration().isLazySessionCreation()) {
-            ensureConnected();
-        }
-        super.doStart();
-    }
-
-    protected synchronized void ensureConnected() throws Exception {
-        if (!mqttEndpoint.isConnected()) {
-            mqttEndpoint.connect();
-        }
-    }
-
-}
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/package.html b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/package.html
deleted file mode 100644
index 8834a2d..0000000
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<html>
-<head>
-</head>
-<body>
-
-Defines the <a href="http://activemq.apache.org/camel/mqtt.html">MQTT Component</a>
-
-</body>
-</html>
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBaseTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBaseTest.java
deleted file mode 100644
index b3fa03c..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBaseTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-import org.apache.activemq.broker.BrokerService;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.After;
-import org.junit.Before;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * test sending recieving from an MQTT broker
- */
-public abstract class MQTTBaseTest extends CamelTestSupport {
-    protected static final Logger LOG = LoggerFactory.getLogger(MQTTBaseTest.class);
-    protected static final String TEST_TOPIC = "ComponentTestTopic";
-    protected static final String TEST_TOPIC_2 = "AnotherTestTopic";
-    protected static final String TEST_WILDCARD_TOPIC = "base/+/#";
-    protected static final String TEST_TOPICS = TEST_TOPIC + "," + TEST_TOPIC_2;
-    protected static final String TEST_TOPICS_WITH_WILDCARDS = TEST_TOPICS + "," + TEST_WILDCARD_TOPIC;
-    protected BrokerService brokerService;
-    protected int numberOfMessages = 10;
-
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        brokerService = MQTTTestSupport.newBrokerService();
-        brokerService.start();
-        super.setUp();
-    }
-
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        super.tearDown();
-        if (brokerService != null) {
-            brokerService.stop();
-        }
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBrigeTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBrigeTest.java
deleted file mode 100644
index 7bd0ba3..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTBrigeTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
-
-/**
- * Tests bridging between two mqtt topic using Camel
- */
-public class MQTTBrigeTest extends MQTTBaseTest {
-    
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:start")
-    protected ProducerTemplate template;
-
-    @Produce("direct:startWorkaround")
-    protected ProducerTemplate workaroundTemplate;
-
-    @Test
-    public void testMqttBridge() throws Exception {
-        String expectedBody = "Dummy!";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        template.sendBody(expectedBody);
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testMqttBridgeWorkAround() throws Exception {
-        String expectedBody = "Dummy!";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        workaroundTemplate.sendBody(expectedBody);
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                // Bridge message over two MQTT topics
-                from("direct:start").to("mqtt:foo?publishTopicName=test/topic1&lazySessionCreation=false&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-
-                from("mqtt:foo?subscribeTopicName=test/topic1&host=" + MQTTTestSupport.getHostForMQTTEndpoint()).to("log:testlogger?showAll=true")
-                    .to("mqtt:foo?publishTopicName=test/resulttopic&lazySessionCreation=false&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .log(LoggingLevel.ERROR, "Message processed");
-
-                // Bridge message over two MQTT topics with a seda in between
-                from("direct:startWorkaround").to("mqtt:foo?publishTopicName=test/topic2&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-                from("mqtt:foo?subscribeTopicName=test/topic2&host=" + MQTTTestSupport.getHostForMQTTEndpoint()).to("log:testlogger?showAll=true")
-                    .to("seda:a");
-                from("seda:a").to("mqtt:foo?publishTopicName=test/resulttopic&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .log(LoggingLevel.ERROR, "Message processed");
-                // Forward the result to a mock endpoint to test
-                from("mqtt:foo?subscribeTopicName=test/resulttopic&host=" + MQTTTestSupport.getHostForMQTTEndpoint()).to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConfigurationTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConfigurationTest.java
deleted file mode 100644
index 3028c63..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConfigurationTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.camel.Endpoint;
-import org.fusesource.mqtt.client.QoS;
-import org.junit.Test;
-
-public class MQTTConfigurationTest extends MQTTBaseTest {
-
-    @Test
-    public void testBasicConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?byDefaultRetain=true&qualityOfService=exactlyOnce&publishTopicName=" + TEST_TOPIC + "&subscribeTopicName=" + TEST_TOPIC
-                                                + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.EXACTLY_ONCE);
-        assertEquals(mqttEndpoint.getConfiguration().getPublishTopicName(), TEST_TOPIC);
-        assertEquals(mqttEndpoint.getConfiguration().getSubscribeTopicName(), TEST_TOPIC);
-        assertTrue(mqttEndpoint.getConfiguration().isByDefaultRetain());
-    }
-
-    @Test
-    public void testMultipleSubscribeTopicsConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?byDefaultRetain=true&qualityOfService=exactlyOnce&publishTopicName=" + TEST_TOPIC + "&subscribeTopicNames=" + TEST_TOPICS
-                                                + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.EXACTLY_ONCE);
-        assertEquals(mqttEndpoint.getConfiguration().getPublishTopicName(), TEST_TOPIC);
-        assertEquals(mqttEndpoint.getConfiguration().getSubscribeTopicNames(), TEST_TOPICS);
-        assertTrue(mqttEndpoint.getConfiguration().isByDefaultRetain());
-    }
-
-    @Test
-    public void testWildcardSubscribeTopicsConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?byDefaultRetain=true&qualityOfService=exactlyOnce&publishTopicName=" + TEST_TOPIC + "&subscribeTopicNames="
-                                                + TEST_TOPICS_WITH_WILDCARDS + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.EXACTLY_ONCE);
-        assertEquals(mqttEndpoint.getConfiguration().getPublishTopicName(), TEST_TOPIC);
-        assertEquals(mqttEndpoint.getConfiguration().getSubscribeTopicNames(), TEST_TOPICS_WITH_WILDCARDS);
-        assertTrue(mqttEndpoint.getConfiguration().isByDefaultRetain());
-    }
-
-    @Test
-    public void testExactlyOnceQualityOfServiceConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?qualityOfService=exactlyOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.EXACTLY_ONCE);
-    }
-
-    @Test
-    public void testAtLeastOnceQualityOfServiceConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?qualityOfService=AtLeastOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.AT_LEAST_ONCE);
-    }
-
-    @Test
-    public void testAtMostOnceQualityOfServiceConfiguration() throws Exception {
-        Endpoint endpoint = context.getEndpoint("mqtt:todo?qualityOfService=AtMostOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-        assertTrue("Endpoint not a MQTTEndpoint: " + endpoint, endpoint instanceof MQTTEndpoint);
-        MQTTEndpoint mqttEndpoint = (MQTTEndpoint)endpoint;
-
-        assertEquals(mqttEndpoint.getConfiguration().getQoS(), QoS.AT_MOST_ONCE);
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerMultipleTopicsTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerMultipleTopicsTest.java
deleted file mode 100644
index e40a21a..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerMultipleTopicsTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.junit.Test;
-
-public class MQTTConsumerMultipleTopicsTest extends MQTTBaseTest {
-
-    @Test
-    public void testConsumeMultipleTopics() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        BlockingConnection publisherConnection = mqtt.blockingConnection();
-        Topic topic1 = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
-        Topic topic2 = new Topic(TEST_TOPIC_2, QoS.AT_MOST_ONCE);
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMinimumMessageCount(numberOfMessages * 2);
-
-        publisherConnection.connect();
-        String payload;
-        for (int i = 0; i < numberOfMessages; i++) {
-            payload = "Topic 1, Message " + i;
-            publisherConnection.publish(topic1.name().toString(), payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-            payload = "Topic 2, Message " + i;
-            publisherConnection.publish(topic2.name().toString(), payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-        }
-
-        mock.await(5, TimeUnit.SECONDS);
-        mock.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("mqtt:bar?subscribeTopicNames=" + TEST_TOPICS + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .transform(body().convertToString())
-                    .to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerTest.java
deleted file mode 100644
index 12dc257..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.junit.Test;
-
-public class MQTTConsumerTest extends MQTTBaseTest {
-
-    @Test
-    public void testConsume() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        BlockingConnection publisherConnection = mqtt.blockingConnection();
-        Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMinimumMessageCount(numberOfMessages);
-
-        publisherConnection.connect();
-        for (int i = 0; i < numberOfMessages; i++) {
-            String payload = "Message " + i;
-            publisherConnection.publish(topic.name().toString(), payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-        }
-
-        mock.await(5, TimeUnit.SECONDS);
-        mock.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("mqtt:bar?subscribeTopicName=" + TEST_TOPIC + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                        .transform(body().convertToString())
-                        .to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerWildcardTopicsTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerWildcardTopicsTest.java
deleted file mode 100644
index b390e80..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTConsumerWildcardTopicsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.QoS;
-import org.junit.Test;
-
-public class MQTTConsumerWildcardTopicsTest extends MQTTBaseTest {
-
-    private static final String[] PUBLISH_TOPICS = {
-        TEST_TOPIC,
-        TEST_TOPIC_2,
-        "base",                    // doesn't match wildcard
-        "base/foo",                // matches
-        "base/foo/bar",            // matches
-        "base/bat/data/baz/splat"  // matches
-    };
-
-    @Test
-    public void testConsumeMultipleTopicsWithWildcards() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        BlockingConnection publisherConnection = mqtt.blockingConnection();
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMinimumMessageCount(numberOfMessages * (PUBLISH_TOPICS.length - 1));
-
-        publisherConnection.connect();
-        String payload;
-        for (String topic : PUBLISH_TOPICS) {
-            for (int i = 0; i < numberOfMessages; i++) {
-                payload = "Topic " + topic + ", Message " + i;
-                publisherConnection.publish(topic, payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-            }
-        }
-
-        mock.await(5, TimeUnit.SECONDS);
-        mock.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("mqtt:bar?subscribeTopicNames=" + TEST_TOPICS_WITH_WILDCARDS + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .transform(body().convertToString())
-                    .to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTDuplicatesTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTDuplicatesTest.java
deleted file mode 100644
index f7dfcec..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTDuplicatesTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.activemq.broker.BrokerService;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Tests duplicate delivery via mqtt consumer.
- */
-public class MQTTDuplicatesTest extends MQTTBaseTest {
-
-    private static final int MESSAGE_COUNT = 50;
-    private static final int WAIT_MILLIS = 100;
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce("direct:withClientID")
-    protected ProducerTemplate templateWithClientID;
-
-    @Produce("direct:withoutClientID")
-    protected ProducerTemplate templateWithoutClientID;
-
-    @Test
-    public void testMqttDuplicates() throws Exception {
-        for (int i = 0; i < MESSAGE_COUNT; i++) {
-            String body = System.currentTimeMillis() + ": Dummy! " + i;
-            templateWithClientID.asyncSendBody("direct:withClientID", body);
-            Thread.sleep(WAIT_MILLIS);
-        }
-
-        assertNoDuplicates();
-    }
-
-    @Test
-    public void testMqttDuplicatesAfterBrokerRestartWithoutClientID() throws Exception {
-        brokerService.stop();
-        brokerService.waitUntilStopped();
-
-        LOG.info(">>>>>>>>>> Restarting broker...");
-        brokerService = new BrokerService();
-        brokerService.setPersistent(false);
-        brokerService.setAdvisorySupport(false);
-        brokerService.addConnector(MQTTTestSupport.getConnection() + "?trace=true");
-        brokerService.start();
-        brokerService.waitUntilStarted();
-        LOG.info(">>>>>>>>>> Broker restarted");
-
-        for (int i = 0; i < MESSAGE_COUNT; i++) {
-            String body = System.currentTimeMillis() + ": Dummy-restart-without-clientID! " + i;
-            templateWithoutClientID.asyncSendBody("direct:withoutClientID", body);
-            Thread.sleep(WAIT_MILLIS);
-        }
-
-        assertNoDuplicates();
-    }
-
-    @Test
-    public void testMqttDuplicatesAfterBrokerRestartWithClientID() throws Exception {
-        brokerService.stop();
-        brokerService.waitUntilStopped();
-
-        LOG.info(">>>>>>>>>> Restarting broker...");
-        brokerService = new BrokerService();
-        brokerService.setPersistent(false);
-        brokerService.setAdvisorySupport(false);
-        brokerService.addConnector(MQTTTestSupport.getConnection() + "?trace=true");
-        brokerService.start();
-        brokerService.waitUntilStarted();
-        LOG.info(">>>>>>>>>> Broker restarted");
-
-        for (int i = 0; i < MESSAGE_COUNT; i++) {
-            String body = System.currentTimeMillis() + ": Dummy-restart-with-clientID! " + i;
-            templateWithClientID.asyncSendBody("direct:withClientID", body);
-            Thread.sleep(WAIT_MILLIS);
-        }
-
-        assertNoDuplicates();
-    }
-
-    private void assertNoDuplicates() {
-        List<Exchange> exchanges = resultEndpoint.getExchanges();
-        Assert.assertTrue("No message was delivered - something wrong happened", exchanges.size() > 0);
-        Set<String> values = new HashSet<>();
-        List<String> duplicates = new ArrayList<>();
-        for (Exchange e : exchanges) {
-            String body = e.getIn().getBody(String.class);
-            if (values.contains(body)) {
-                duplicates.add(body);
-            }
-            values.add(body);
-        }
-        Assert.assertTrue("Duplicate messages are detected: " + duplicates.toString(), duplicates.isEmpty());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-
-                // --------------------
-                //  Without client ID:
-                // --------------------
-                from("direct:withoutClientID")
-                    .routeId("SenderWithoutClientID")
-                    .log("$$$$$ Sending message: ${body}")
-                    .to("mqtt:sender?publishTopicName=test/topic1&qualityOfService=ExactlyOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-            
-                from("mqtt:reader?subscribeTopicName=test/topic1&qualityOfService=ExactlyOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .routeId("ReceiverWithoutClientID")
-                    .log("$$$$$ Received message: ${body}")
-                    .to("mock:result");
-
-                // --------------------
-                //  With client ID:
-                // --------------------
-                from("direct:withClientID")
-                    .routeId("SenderWithClientID")
-                    .log("$$$$$ Sending message: ${body}")
-                    .to("mqtt:sender?publishTopicName=test/topic2&clientId=sender&qualityOfService=ExactlyOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-                
-                from("mqtt:reader?subscribeTopicName=test/topic2&clientId=receiver&qualityOfService=ExactlyOnce&host=" + MQTTTestSupport.getHostForMQTTEndpoint())
-                    .routeId("ReceiverWithClientID")
-                    .log("$$$$$ Received message: ${body}")
-                    .to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTLoopProducerTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTLoopProducerTest.java
deleted file mode 100644
index d8db828..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTLoopProducerTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Producer;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.support.DefaultProducer;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.Message;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.junit.Test;
-
-public class MQTTLoopProducerTest extends MQTTBaseTest {
-    @Test
-    public void testProduce() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        final BlockingConnection subscribeConnection = mqtt.blockingConnection();
-        subscribeConnection.connect();
-        Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
-        Topic[] topics = {topic};
-        subscribeConnection.subscribe(topics);
-        final CountDownLatch latch = new CountDownLatch(numberOfMessages * 2); //2 publishers
-
-        Thread thread = new Thread(new Runnable() {
-            public void run() {
-                for (int i = 0; i < numberOfMessages * 2; i++) {
-                    try {
-                        Message message = subscribeConnection.receive();
-                        message.ack();
-                        latch.countDown();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        break;
-                    }
-                }
-            }
-        });
-        thread.start();
-
-        DefaultProducer producer = (DefaultProducer) context.getEndpoint("direct:foo").createProducer();
-        for (int i = 0; i < numberOfMessages; i++) {
-            Exchange exchange = producer.createExchange();
-            exchange.getIn().setBody("test message " + i);
-            producer.process(exchange);
-        }
-        latch.await(10, TimeUnit.SECONDS);
-        assertTrue("Messages not consumed = " + latch.getCount(), latch.getCount() == 0);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:foo")
-                    .setHeader(MQTTConfiguration.MQTT_PUBLISH_TOPIC, constant(TEST_TOPIC))
-                    .to("mqtt:boo1?host=" + MQTTTestSupport.getHostForMQTTEndpoint() + "&qualityOfService=AtMostOnce")
-                    .setHeader(MQTTConfiguration.MQTT_PUBLISH_TOPIC, constant(TEST_TOPIC))
-                    .to("mqtt:boo2?host=" + MQTTTestSupport.getHostForMQTTEndpoint() + "&qualityOfService=AtMostOnce");
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerReconnectTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerReconnectTest.java
deleted file mode 100644
index 886ee37..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerReconnectTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.Message;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.junit.Test;
-
-public class MQTTProducerReconnectTest extends MQTTBaseTest {
-
-    @Test
-    public void testProduce() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        final BlockingConnection subscribeConnection = mqtt.blockingConnection();
-        subscribeConnection.connect();
-        Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
-        Topic[] topics = {topic};
-        subscribeConnection.subscribe(topics);
-        final CountDownLatch latch = new CountDownLatch(numberOfMessages);
-
-        Thread thread = new Thread(new Runnable() {
-            public void run() {
-                for (int i = 0; i < numberOfMessages; i++) {
-                    try {
-                        Message message = subscribeConnection.receive();
-                        message.ack();
-                        latch.countDown();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        break;
-                    }
-                }
-            }
-        });
-        thread.start();
-
-        for (int i = 0; i < numberOfMessages; i++) {
-
-            if (i == 5) {
-                LOG.info("Stopping MQTT transport");
-                brokerService.getTransportConnectorByScheme("mqtt").stop();
-
-                Thread starter = new Thread(new Runnable() {
-                    public void run() {
-                        try {
-                            Thread.sleep(3000);
-                            LOG.info("Starting MQTT transport again");
-                            brokerService.getTransportConnectorByScheme("mqtt").start();
-                        } catch (Exception e) {
-                            // ignore
-                        }
-                    }
-                });
-                starter.start();
-            }
-
-            try {
-                template.sendBody("direct:foo", "test message " + i);
-            } catch (Exception e) {
-                // ignore
-            }
-        }
-
-        latch.await(20, TimeUnit.SECONDS);
-        assertTrue("Messages not consumed = " + latch.getCount(), latch.getCount() == 0);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:foo").to("mqtt:boo?reconnectDelay=1000&publishTopicName=" + TEST_TOPIC + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerTest.java
deleted file mode 100644
index 537c2e2..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTProducerTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Producer;
-import org.apache.camel.builder.RouteBuilder;
-import org.fusesource.mqtt.client.BlockingConnection;
-import org.fusesource.mqtt.client.MQTT;
-import org.fusesource.mqtt.client.Message;
-import org.fusesource.mqtt.client.QoS;
-import org.fusesource.mqtt.client.Topic;
-import org.junit.Test;
-
-public class MQTTProducerTest extends MQTTBaseTest {
-
-    @Test
-    public void testProduce() throws Exception {
-        MQTT mqtt = new MQTT();
-        mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
-        final BlockingConnection subscribeConnection = mqtt.blockingConnection();
-        subscribeConnection.connect();
-        Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
-        Topic[] topics = {topic};
-        subscribeConnection.subscribe(topics);
-        final CountDownLatch latch = new CountDownLatch(numberOfMessages);
-
-        Thread thread = new Thread(new Runnable() {
-            public void run() {
-                for (int i = 0; i < numberOfMessages; i++) {
-                    try {
-                        Message message = subscribeConnection.receive();
-                        message.ack();
-                        latch.countDown();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        break;
-                    }
-                }
-            }
-        });
-        thread.start();
-
-        Producer producer = context.getEndpoint("direct:foo").createProducer();
-        for (int i = 0; i < numberOfMessages; i++) {
-            Exchange exchange = producer.getEndpoint().createExchange();
-            exchange.getIn().setBody("test message " + i);
-            producer.process(exchange);
-        }
-        latch.await(20, TimeUnit.SECONDS);
-        assertTrue("Messages not consumed = " + latch.getCount(), latch.getCount() == 0);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:foo").to("mqtt:boo?publishTopicName=" + TEST_TOPIC + "&host=" + MQTTTestSupport.getHostForMQTTEndpoint());
-            }
-        };
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTTestSupport.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTTestSupport.java
deleted file mode 100644
index ad8338c..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/MQTTTestSupport.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.activemq.broker.BrokerService;
-import org.apache.camel.test.AvailablePortFinder;
-
-/**
- * For test cases that use unique contexts, they can share the 
- * ports which will make things a bit faster as ports aren't opened
- * and closed all the time. 
- */
-public final class MQTTTestSupport {
-
-    static final int PORT1 = AvailablePortFinder.getNextAvailable();  
-    static final String CONNECTION;
-    private static final String HOST;
-
-    static {
-        //set them as system properties so Spring can use the property placeholder
-        //things to set them into the URL's in the spring contexts
-        System.setProperty("MQTTTestSupport.port1", Integer.toString(PORT1));
-        CONNECTION = "mqtt://127.0.0.1:" + PORT1;
-        HOST = "tcp://127.0.0.1:" + PORT1;
-    }
-    
-    private MQTTTestSupport() {
-    }
-    
-    public static int getPort(String name) {
-        int port = AvailablePortFinder.getNextAvailable();
-        System.setProperty(name, Integer.toString(port));
-        return port;
-    }
-    
-    public static int getPort1() {
-        return PORT1;
-    }
-
-    public static String getConnection() {
-        return CONNECTION;
-    }
-
-    public static String getHostForMQTTEndpoint() {
-        return HOST;
-    }
-
-
-
-    public static BrokerService newBrokerService() throws Exception {
-        BrokerService service = new BrokerService();
-        service.setPersistent(false);
-        service.setAdvisorySupport(false);
-        service.addConnector(getConnection());
-
-        return service;
-    }
-
-    public static MQTTComponent newComponent() throws Exception {
-        MQTTComponent component = new MQTTComponent();
-        component.setHost(getHostForMQTTEndpoint());
-
-        return component;
-    }
-}
diff --git a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/SpringMQTTTest.java b/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/SpringMQTTTest.java
deleted file mode 100644
index 4d1ead0..0000000
--- a/components/camel-mqtt/src/test/java/org/apache/camel/component/mqtt/SpringMQTTTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt;
-
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
-import org.springframework.context.support.AbstractApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.test.annotation.DirtiesContext;
-
-@DirtiesContext
-public class SpringMQTTTest extends CamelSpringTestSupport {
-    @Override
-    protected AbstractApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/mqtt/SpringMQTTTest.xml");
-    }
-
-    @Test
-    public void simpleTest() throws Exception {
-    }
-}
diff --git a/components/camel-mqtt/src/test/resources/log4j2.properties b/components/camel-mqtt/src/test/resources/log4j2.properties
deleted file mode 100644
index c7fcffc..0000000
--- a/components/camel-mqtt/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-mqtt-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = info
-rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-mqtt/src/test/resources/org/apache/camel/component/mqtt/SpringMQTTTest.xml b/components/camel-mqtt/src/test/resources/org/apache/camel/component/mqtt/SpringMQTTTest.xml
deleted file mode 100644
index 07be8ff..0000000
--- a/components/camel-mqtt/src/test/resources/org/apache/camel/component/mqtt/SpringMQTTTest.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
-        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-  <bean id="broker"
-        class="org.apache.camel.component.mqtt.MQTTTestSupport"
-        factory-method="newBrokerService"
-        init-method="start"
-        destroy-method="stop"/>
-
-  <bean id="mqtt"
-        class="org.apache.camel.component.mqtt.MQTTTestSupport"
-        factory-method="newComponent"/>
-
-  <camelContext id="basic-mqtt-component" xmlns="http://camel.apache.org/schema/spring" autoStartup="true">
-
-    <endpoint id="mqtt-endpoint" uri="mqtt:mqtt-endpoint?publishTopicName=basicMqtt/message/basic-1"/>
-
-    <route>
-      <from uri="direct:in"/>
-      <to uri="ref:mqtt-endpoint"/>
-    </route>
-  </camelContext>
-
-</beans>
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MqttSpanDecorator.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MqttSpanDecorator.java
deleted file mode 100644
index 4baee73..0000000
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/MqttSpanDecorator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.opentracing.decorators;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-
-public class MqttSpanDecorator extends AbstractMessagingSpanDecorator {
-
-    @Override
-    public String getComponent() {
-        return "mqtt";
-    }
-
-    @Override
-    public String getOperationName(Exchange exchange, Endpoint endpoint) {
-        return stripSchemeAndOptions(endpoint);
-    }
-
-    @Override
-    protected String getDestination(Exchange exchange, Endpoint endpoint) {
-        Map<String, String> queryParameters = toQueryParameters(endpoint.getEndpointUri());
-        String destination = queryParameters.get("subscribeTopicNames");
-        if (destination == null) {
-            destination = queryParameters.get("publishTopicName");
-        }
-        return destination;
-    }
-
-}
diff --git a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
index a36d9b7..fc5873e 100644
--- a/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
+++ b/components/camel-opentracing/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
@@ -35,7 +35,6 @@ org.apache.camel.opentracing.decorators.JmsSpanDecorator
 org.apache.camel.opentracing.decorators.KafkaSpanDecorator
 org.apache.camel.opentracing.decorators.LogSpanDecorator
 org.apache.camel.opentracing.decorators.MongoDBSpanDecorator
-org.apache.camel.opentracing.decorators.MqttSpanDecorator
 org.apache.camel.opentracing.decorators.NettyHttpSpanDecorator
 org.apache.camel.opentracing.decorators.PahoSpanDecorator
 org.apache.camel.opentracing.decorators.RabbitmqSpanDecorator
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MqttSpanDecoratorTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MqttSpanDecoratorTest.java
deleted file mode 100644
index f810f30..0000000
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/decorators/MqttSpanDecoratorTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.opentracing.decorators;
-
-import org.apache.camel.Endpoint;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import static org.junit.Assert.assertEquals;
-
-public class MqttSpanDecoratorTest {
-
-    @Test
-    public void testGetOperationName() {
-        Endpoint endpoint = Mockito.mock(Endpoint.class);
-
-        Mockito.when(endpoint.getEndpointUri()).thenReturn("mqtt://hello?publishTopicName=world");
-
-        MqttSpanDecorator decorator = new MqttSpanDecorator();
-
-        assertEquals("hello", decorator.getOperationName(null, endpoint));
-    }
-
-    @Test
-    public void testGetDestinationPublish() {
-        Endpoint endpoint = Mockito.mock(Endpoint.class);
-
-        Mockito.when(endpoint.getEndpointUri()).thenReturn("mqtt://hello?publishTopicName=world");
-
-        MqttSpanDecorator decorator = new MqttSpanDecorator();
-
-        assertEquals("world", decorator.getDestination(null, endpoint));
-    }
-
-    @Test
-    public void testGetDestinationSubscribe() {
-        Endpoint endpoint = Mockito.mock(Endpoint.class);
-
-        Mockito.when(endpoint.getEndpointUri()).thenReturn("mqtt://hello?subscribeTopicNames=world");
-
-        MqttSpanDecorator decorator = new MqttSpanDecorator();
-
-        assertEquals("world", decorator.getDestination(null, endpoint));
-    }
-
-}
diff --git a/components/pom.xml b/components/pom.xml
index 02ffb0c..1e213ec 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -246,7 +246,6 @@
         <module>camel-mllp</module>
         <module>camel-mongodb</module>
         <module>camel-mongodb-gridfs</module>
-        <module>camel-mqtt</module>
         <module>camel-msv</module>
         <module>camel-mustache</module>
         <module>camel-mvel</module>
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 4ac7f51..ec2eeb4 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -203,7 +203,6 @@ public interface EndpointBuilderFactory extends
         LuceneEndpointBuilderFactory,
         LumberjackEndpointBuilderFactory,
         MQEndpointBuilderFactory,
-        MQTTEndpointBuilderFactory,
         MSKEndpointBuilderFactory,
         MailEndpointBuilderFactory,
         MasterEndpointBuilderFactory,
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java
deleted file mode 100644
index 04ceed0..0000000
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java
+++ /dev/null
@@ -1,2640 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder.endpoint.dsl;
-
-import java.net.URI;
-import java.util.concurrent.Executor;
-import javax.annotation.Generated;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.builder.EndpointConsumerBuilder;
-import org.apache.camel.builder.EndpointProducerBuilder;
-import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
-import org.apache.camel.spi.ExceptionHandler;
-
-/**
- * Component for communicating with MQTT M2M message brokers using FuseSource
- * MQTT Client.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface MQTTEndpointBuilderFactory {
-
-
-    /**
-     * Builder for endpoint consumers for the MQTT component.
-     */
-    public interface MQTTEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default AdvancedMQTTEndpointConsumerBuilder advanced() {
-            return (AdvancedMQTTEndpointConsumerBuilder) this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option is a: <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder blockingExecutor(
-                Executor blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option will be converted to a
-         * <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder blockingExecutor(
-                String blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder byDefaultRetain(
-                boolean byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder byDefaultRetain(
-                String byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder cleanSession(boolean cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder cleanSession(String cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Use to set the client Id of the session. This is what an MQTT server
-         * uses to identify a session where setCleanSession(false); is being
-         * used. The id must be 23 characters or less. Defaults to auto
-         * generated id (based on your socket address, port and timestamp).
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder clientId(String clientId) {
-            doSetProperty("clientId", clientId);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder connectAttemptsMax(
-                long connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder connectAttemptsMax(
-                String connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder connectWaitInSeconds(
-                int connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder connectWaitInSeconds(
-                String connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder disconnectWaitInSeconds(
-                int disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder disconnectWaitInSeconds(
-                String disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option is a:
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder dispatchQueue(Object dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder dispatchQueue(String dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * The URI of the MQTT broker to connect too - this component also
-         * supports SSL - e.g. ssl://127.0.0.1:8883.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder host(String host) {
-            doSetProperty("host", host);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option is a: <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder keepAlive(short keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option will be converted to a <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder keepAlive(String keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option is a: <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder localAddress(URI localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option will be converted to a <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder localAddress(String localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder maxReadRate(int maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder maxReadRate(String maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder maxWriteRate(int maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder maxWriteRate(String maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (one of AtMostOnce, AtLeastOnce or
-         * ExactlyOnce ) - then that QoS will be set on the message sent to the
-         * MQTT message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder mqttQosPropertyName(
-                String mqttQosPropertyName) {
-            doSetProperty("mqttQosPropertyName", mqttQosPropertyName);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (expects a Boolean value) - then
-         * the retain property will be set on the message sent to the MQTT
-         * message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder mqttRetainPropertyName(
-                String mqttRetainPropertyName) {
-            doSetProperty("mqttRetainPropertyName", mqttRetainPropertyName);
-            return this;
-        }
-        /**
-         * These a properties that are looked for in an Exchange - to publish
-         * to.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder mqttTopicPropertyName(
-                String mqttTopicPropertyName) {
-            doSetProperty("mqttTopicPropertyName", mqttTopicPropertyName);
-            return this;
-        }
-        /**
-         * The default Topic to publish messages on.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder publishTopicName(
-                String publishTopicName) {
-            doSetProperty("publishTopicName", publishTopicName);
-            return this;
-        }
-        /**
-         * Quality of service level to use for topics.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder qualityOfService(
-                String qualityOfService) {
-            doSetProperty("qualityOfService", qualityOfService);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder receiveBufferSize(
-                int receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder receiveBufferSize(
-                String receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectAttemptsMax(
-                long reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectAttemptsMax(
-                String reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option is a: <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectBackOffMultiplier(
-                double reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option will be converted to a <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectBackOffMultiplier(
-                String reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectDelay(long reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectDelay(String reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectDelayMax(
-                long reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder reconnectDelayMax(
-                String reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sendBufferSize(int sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sendBufferSize(String sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sendWaitInSeconds(
-                int sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sendWaitInSeconds(
-                String sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option is a: <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sslContext(Object sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option will be converted to a
-         * <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder sslContext(String sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * These are set on the Endpoint - together with properties inherited
-         * from MQTT.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        @Deprecated
-        default MQTTEndpointConsumerBuilder subscribeTopicName(
-                String subscribeTopicName) {
-            doSetProperty("subscribeTopicName", subscribeTopicName);
-            return this;
-        }
-        /**
-         * A comma-delimited list of Topics to subscribe to for messages. Note
-         * that each item of this list can contain MQTT wildcards ( and/or #),
-         * in order to subscribe to topics matching a certain pattern within a
-         * hierarchy. For example, is a wildcard for all topics at a level
-         * within the hierarchy, so if a broker has topics topics/one and
-         * topics/two, then topics/ can be used to subscribe to both. A caveat
-         * to consider here is that if the broker adds topics/three, the route
-         * would also begin to receive messages from that topic.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder subscribeTopicNames(
-                String subscribeTopicNames) {
-            doSetProperty("subscribeTopicNames", subscribeTopicNames);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder trafficClass(int trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder trafficClass(String trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1
-         * protocol version.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder version(String version) {
-            doSetProperty("version", version);
-            return this;
-        }
-        /**
-         * The Will message to send. Defaults to a zero length message.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willMessage(String willMessage) {
-            doSetProperty("willMessage", willMessage);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willQos(QoS willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willQos(String willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willRetain(boolean willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willRetain(String willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * If set the server will publish the client's Will message to the
-         * specified topics if the client has an unexpected disconnection.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointConsumerBuilder willTopic(String willTopic) {
-            doSetProperty("willTopic", willTopic);
-            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: <code>boolean</code> type.
-         * 
-         * Group: consumer
-         */
-        default MQTTEndpointConsumerBuilder 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 <code>boolean</code> type.
-         * 
-         * Group: consumer
-         */
-        default MQTTEndpointConsumerBuilder bridgeErrorHandler(
-                String bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint consumers for the MQTT component.
-     */
-    public interface AdvancedMQTTEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default MQTTEndpointConsumerBuilder basic() {
-            return (MQTTEndpointConsumerBuilder) 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: <code>org.apache.camel.spi.ExceptionHandler</code>
-         * type.
-         * 
-         * Group: consumer (advanced)
-         */
-        default AdvancedMQTTEndpointConsumerBuilder 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
-         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
-         * 
-         * Group: consumer (advanced)
-         */
-        default AdvancedMQTTEndpointConsumerBuilder exceptionHandler(
-                String exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option is a: <code>org.apache.camel.ExchangePattern</code> type.
-         * 
-         * Group: consumer (advanced)
-         */
-        default AdvancedMQTTEndpointConsumerBuilder 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
-         * <code>org.apache.camel.ExchangePattern</code> type.
-         * 
-         * Group: consumer (advanced)
-         */
-        default AdvancedMQTTEndpointConsumerBuilder exchangePattern(
-                String exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointConsumerBuilder basicPropertyBinding(
-                boolean basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointConsumerBuilder basicPropertyBinding(
-                String basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointConsumerBuilder synchronous(
-                boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointConsumerBuilder synchronous(
-                String synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the MQTT component.
-     */
-    public interface MQTTEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedMQTTEndpointProducerBuilder advanced() {
-            return (AdvancedMQTTEndpointProducerBuilder) this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option is a: <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder blockingExecutor(
-                Executor blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option will be converted to a
-         * <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder blockingExecutor(
-                String blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder byDefaultRetain(
-                boolean byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder byDefaultRetain(
-                String byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder cleanSession(boolean cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder cleanSession(String cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Use to set the client Id of the session. This is what an MQTT server
-         * uses to identify a session where setCleanSession(false); is being
-         * used. The id must be 23 characters or less. Defaults to auto
-         * generated id (based on your socket address, port and timestamp).
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder clientId(String clientId) {
-            doSetProperty("clientId", clientId);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder connectAttemptsMax(
-                long connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder connectAttemptsMax(
-                String connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder connectWaitInSeconds(
-                int connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder connectWaitInSeconds(
-                String connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder disconnectWaitInSeconds(
-                int disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder disconnectWaitInSeconds(
-                String disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option is a:
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder dispatchQueue(Object dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder dispatchQueue(String dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * The URI of the MQTT broker to connect too - this component also
-         * supports SSL - e.g. ssl://127.0.0.1:8883.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder host(String host) {
-            doSetProperty("host", host);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option is a: <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder keepAlive(short keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option will be converted to a <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder keepAlive(String keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option is a: <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder localAddress(URI localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option will be converted to a <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder localAddress(String localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder maxReadRate(int maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder maxReadRate(String maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder maxWriteRate(int maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder maxWriteRate(String maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (one of AtMostOnce, AtLeastOnce or
-         * ExactlyOnce ) - then that QoS will be set on the message sent to the
-         * MQTT message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder mqttQosPropertyName(
-                String mqttQosPropertyName) {
-            doSetProperty("mqttQosPropertyName", mqttQosPropertyName);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (expects a Boolean value) - then
-         * the retain property will be set on the message sent to the MQTT
-         * message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder mqttRetainPropertyName(
-                String mqttRetainPropertyName) {
-            doSetProperty("mqttRetainPropertyName", mqttRetainPropertyName);
-            return this;
-        }
-        /**
-         * These a properties that are looked for in an Exchange - to publish
-         * to.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder mqttTopicPropertyName(
-                String mqttTopicPropertyName) {
-            doSetProperty("mqttTopicPropertyName", mqttTopicPropertyName);
-            return this;
-        }
-        /**
-         * The default Topic to publish messages on.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder publishTopicName(
-                String publishTopicName) {
-            doSetProperty("publishTopicName", publishTopicName);
-            return this;
-        }
-        /**
-         * Quality of service level to use for topics.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder qualityOfService(
-                String qualityOfService) {
-            doSetProperty("qualityOfService", qualityOfService);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder receiveBufferSize(
-                int receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder receiveBufferSize(
-                String receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectAttemptsMax(
-                long reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectAttemptsMax(
-                String reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option is a: <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectBackOffMultiplier(
-                double reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option will be converted to a <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectBackOffMultiplier(
-                String reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectDelay(long reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectDelay(String reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectDelayMax(
-                long reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder reconnectDelayMax(
-                String reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sendBufferSize(int sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sendBufferSize(String sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sendWaitInSeconds(
-                int sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sendWaitInSeconds(
-                String sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option is a: <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sslContext(Object sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option will be converted to a
-         * <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder sslContext(String sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * These are set on the Endpoint - together with properties inherited
-         * from MQTT.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        @Deprecated
-        default MQTTEndpointProducerBuilder subscribeTopicName(
-                String subscribeTopicName) {
-            doSetProperty("subscribeTopicName", subscribeTopicName);
-            return this;
-        }
-        /**
-         * A comma-delimited list of Topics to subscribe to for messages. Note
-         * that each item of this list can contain MQTT wildcards ( and/or #),
-         * in order to subscribe to topics matching a certain pattern within a
-         * hierarchy. For example, is a wildcard for all topics at a level
-         * within the hierarchy, so if a broker has topics topics/one and
-         * topics/two, then topics/ can be used to subscribe to both. A caveat
-         * to consider here is that if the broker adds topics/three, the route
-         * would also begin to receive messages from that topic.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder subscribeTopicNames(
-                String subscribeTopicNames) {
-            doSetProperty("subscribeTopicNames", subscribeTopicNames);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder trafficClass(int trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder trafficClass(String trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1
-         * protocol version.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder version(String version) {
-            doSetProperty("version", version);
-            return this;
-        }
-        /**
-         * The Will message to send. Defaults to a zero length message.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willMessage(String willMessage) {
-            doSetProperty("willMessage", willMessage);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willQos(QoS willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willQos(String willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willRetain(boolean willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willRetain(String willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * If set the server will publish the client's Will message to the
-         * specified topics if the client has an unexpected disconnection.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointProducerBuilder willTopic(String willTopic) {
-            doSetProperty("willTopic", willTopic);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: producer
-         */
-        default MQTTEndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: producer
-         */
-        default MQTTEndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the MQTT component.
-     */
-    public interface AdvancedMQTTEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default MQTTEndpointProducerBuilder basic() {
-            return (MQTTEndpointProducerBuilder) this;
-        }
-        /**
-         * Sessions can be lazily created to avoid exceptions, if the remote
-         * server is not up and running when the Camel producer is started.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: producer (advanced)
-         */
-        default AdvancedMQTTEndpointProducerBuilder lazySessionCreation(
-                boolean lazySessionCreation) {
-            doSetProperty("lazySessionCreation", lazySessionCreation);
-            return this;
-        }
-        /**
-         * Sessions can be lazily created to avoid exceptions, if the remote
-         * server is not up and running when the Camel producer is started.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: producer (advanced)
-         */
-        default AdvancedMQTTEndpointProducerBuilder lazySessionCreation(
-                String lazySessionCreation) {
-            doSetProperty("lazySessionCreation", lazySessionCreation);
-            return this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointProducerBuilder basicPropertyBinding(
-                boolean basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointProducerBuilder basicPropertyBinding(
-                String basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointProducerBuilder synchronous(
-                boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointProducerBuilder synchronous(
-                String synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint for the MQTT component.
-     */
-    public interface MQTTEndpointBuilder
-            extends
-                MQTTEndpointConsumerBuilder, MQTTEndpointProducerBuilder {
-        default AdvancedMQTTEndpointBuilder advanced() {
-            return (AdvancedMQTTEndpointBuilder) this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option is a: <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder blockingExecutor(Executor blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * SSL connections perform blocking operations against internal thread
-         * pool unless you call the setBlockingExecutor method to configure that
-         * executor they will use instead.
-         * 
-         * The option will be converted to a
-         * <code>java.util.concurrent.Executor</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder blockingExecutor(String blockingExecutor) {
-            doSetProperty("blockingExecutor", blockingExecutor);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder byDefaultRetain(boolean byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * The default retain policy to be used on messages sent to the MQTT
-         * broker.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder byDefaultRetain(String byDefaultRetain) {
-            doSetProperty("byDefaultRetain", byDefaultRetain);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder cleanSession(boolean cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Set to false if you want the MQTT server to persist topic
-         * subscriptions and ack positions across client sessions. Defaults to
-         * true.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder cleanSession(String cleanSession) {
-            doSetProperty("cleanSession", cleanSession);
-            return this;
-        }
-        /**
-         * Use to set the client Id of the session. This is what an MQTT server
-         * uses to identify a session where setCleanSession(false); is being
-         * used. The id must be 23 characters or less. Defaults to auto
-         * generated id (based on your socket address, port and timestamp).
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder clientId(String clientId) {
-            doSetProperty("clientId", clientId);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder connectAttemptsMax(long connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client on the first attempt by the client to connect to a
-         * server. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder connectAttemptsMax(String connectAttemptsMax) {
-            doSetProperty("connectAttemptsMax", connectAttemptsMax);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder connectWaitInSeconds(
-                int connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * Delay in seconds the Component will wait for a connection to be
-         * established to the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder connectWaitInSeconds(
-                String connectWaitInSeconds) {
-            doSetProperty("connectWaitInSeconds", connectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder disconnectWaitInSeconds(
-                int disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * The number of seconds the Component will wait for a valid disconnect
-         * on stop() from the MQTT broker.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder disconnectWaitInSeconds(
-                String disconnectWaitInSeconds) {
-            doSetProperty("disconnectWaitInSeconds", disconnectWaitInSeconds);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option is a:
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder dispatchQueue(Object dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * A HawtDispatch dispatch queue is used to synchronize access to the
-         * connection. If an explicit queue is not configured via the
-         * setDispatchQueue method, then a new queue will be created for the
-         * connection. Setting an explicit queue might be handy if you want
-         * multiple connection to share the same queue for synchronization.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.hawtdispatch.DispatchQueue</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder dispatchQueue(String dispatchQueue) {
-            doSetProperty("dispatchQueue", dispatchQueue);
-            return this;
-        }
-        /**
-         * The URI of the MQTT broker to connect too - this component also
-         * supports SSL - e.g. ssl://127.0.0.1:8883.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder host(String host) {
-            doSetProperty("host", host);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option is a: <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder keepAlive(short keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * Configures the Keep Alive timer in seconds. Defines the maximum time
-         * interval between messages received from a client. It enables the
-         * server to detect that the network connection to a client has dropped,
-         * without having to wait for the long TCP/IP timeout.
-         * 
-         * The option will be converted to a <code>short</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder keepAlive(String keepAlive) {
-            doSetProperty("keepAlive", keepAlive);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option is a: <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder localAddress(URI localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * The local InetAddress and port to use.
-         * 
-         * The option will be converted to a <code>java.net.URI</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder localAddress(String localAddress) {
-            doSetProperty("localAddress", localAddress);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder maxReadRate(int maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will receive
-         * data at. This setting throttles reads so that the rate is not
-         * exceeded. Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder maxReadRate(String maxReadRate) {
-            doSetProperty("maxReadRate", maxReadRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder maxWriteRate(int maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * Sets the maximum bytes per second that this transport will send data
-         * at. This setting throttles writes so that the rate is not exceeded.
-         * Defaults to 0 which disables throttling.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder maxWriteRate(String maxWriteRate) {
-            doSetProperty("maxWriteRate", maxWriteRate);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (one of AtMostOnce, AtLeastOnce or
-         * ExactlyOnce ) - then that QoS will be set on the message sent to the
-         * MQTT message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder mqttQosPropertyName(
-                String mqttQosPropertyName) {
-            doSetProperty("mqttQosPropertyName", mqttQosPropertyName);
-            return this;
-        }
-        /**
-         * The property name to look for on an Exchange for an individual
-         * published message. If this is set (expects a Boolean value) - then
-         * the retain property will be set on the message sent to the MQTT
-         * message broker.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder mqttRetainPropertyName(
-                String mqttRetainPropertyName) {
-            doSetProperty("mqttRetainPropertyName", mqttRetainPropertyName);
-            return this;
-        }
-        /**
-         * These a properties that are looked for in an Exchange - to publish
-         * to.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder mqttTopicPropertyName(
-                String mqttTopicPropertyName) {
-            doSetProperty("mqttTopicPropertyName", mqttTopicPropertyName);
-            return this;
-        }
-        /**
-         * The default Topic to publish messages on.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder publishTopicName(String publishTopicName) {
-            doSetProperty("publishTopicName", publishTopicName);
-            return this;
-        }
-        /**
-         * Quality of service level to use for topics.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder qualityOfService(String qualityOfService) {
-            doSetProperty("qualityOfService", qualityOfService);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder receiveBufferSize(int receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket receive buffer. Defaults to
-         * 65536 (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder receiveBufferSize(String receiveBufferSize) {
-            doSetProperty("receiveBufferSize", receiveBufferSize);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectAttemptsMax(
-                long reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The maximum number of reconnect attempts before an error is reported
-         * back to the client after a server connection had previously been
-         * established. Set to -1 to use unlimited attempts. Defaults to -1.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectAttemptsMax(
-                String reconnectAttemptsMax) {
-            doSetProperty("reconnectAttemptsMax", reconnectAttemptsMax);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option is a: <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectBackOffMultiplier(
-                double reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * The Exponential backoff be used between reconnect attempts. Set to 1
-         * to disable exponential backoff. Defaults to 2.
-         * 
-         * The option will be converted to a <code>double</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectBackOffMultiplier(
-                String reconnectBackOffMultiplier) {
-            doSetProperty("reconnectBackOffMultiplier", reconnectBackOffMultiplier);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectDelay(long reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * How long to wait in ms before the first reconnect attempt. Defaults
-         * to 10.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectDelay(String reconnectDelay) {
-            doSetProperty("reconnectDelay", reconnectDelay);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option is a: <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectDelayMax(long reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * The maximum amount of time in ms to wait between reconnect attempts.
-         * Defaults to 30,000.
-         * 
-         * The option will be converted to a <code>long</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder reconnectDelayMax(String reconnectDelayMax) {
-            doSetProperty("reconnectDelayMax", reconnectDelayMax);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sendBufferSize(int sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * Sets the size of the internal socket send buffer. Defaults to 65536
-         * (64k).
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sendBufferSize(String sendBufferSize) {
-            doSetProperty("sendBufferSize", sendBufferSize);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sendWaitInSeconds(int sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * The maximum time the Component will wait for a receipt from the MQTT
-         * broker to acknowledge a published message before throwing an
-         * exception.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sendWaitInSeconds(String sendWaitInSeconds) {
-            doSetProperty("sendWaitInSeconds", sendWaitInSeconds);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option is a: <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sslContext(Object sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * To configure security using SSLContext configuration.
-         * 
-         * The option will be converted to a
-         * <code>javax.net.ssl.SSLContext</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder sslContext(String sslContext) {
-            doSetProperty("sslContext", sslContext);
-            return this;
-        }
-        /**
-         * These are set on the Endpoint - together with properties inherited
-         * from MQTT.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        @Deprecated
-        default MQTTEndpointBuilder subscribeTopicName(String subscribeTopicName) {
-            doSetProperty("subscribeTopicName", subscribeTopicName);
-            return this;
-        }
-        /**
-         * A comma-delimited list of Topics to subscribe to for messages. Note
-         * that each item of this list can contain MQTT wildcards ( and/or #),
-         * in order to subscribe to topics matching a certain pattern within a
-         * hierarchy. For example, is a wildcard for all topics at a level
-         * within the hierarchy, so if a broker has topics topics/one and
-         * topics/two, then topics/ can be used to subscribe to both. A caveat
-         * to consider here is that if the broker adds topics/three, the route
-         * would also begin to receive messages from that topic.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder subscribeTopicNames(
-                String subscribeTopicNames) {
-            doSetProperty("subscribeTopicNames", subscribeTopicNames);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option is a: <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder trafficClass(int trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Sets traffic class or type-of-service octet in the IP header for
-         * packets sent from the transport. Defaults to 8 which means the
-         * traffic should be optimized for throughput.
-         * 
-         * The option will be converted to a <code>int</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder trafficClass(String trafficClass) {
-            doSetProperty("trafficClass", trafficClass);
-            return this;
-        }
-        /**
-         * Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1
-         * protocol version.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder version(String version) {
-            doSetProperty("version", version);
-            return this;
-        }
-        /**
-         * The Will message to send. Defaults to a zero length message.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willMessage(String willMessage) {
-            doSetProperty("willMessage", willMessage);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willQos(QoS willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Sets the quality of service to use for the Will message. Defaults to
-         * AT_MOST_ONCE.
-         * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willQos(String willQos) {
-            doSetProperty("willQos", willQos);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willRetain(boolean willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * Set to true if you want the Will to be published with the retain
-         * option.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willRetain(String willRetain) {
-            doSetProperty("willRetain", willRetain);
-            return this;
-        }
-        /**
-         * If set the server will publish the client's Will message to the
-         * specified topics if the client has an unexpected disconnection.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         */
-        default MQTTEndpointBuilder willTopic(String willTopic) {
-            doSetProperty("willTopic", willTopic);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint for the MQTT component.
-     */
-    public interface AdvancedMQTTEndpointBuilder
-            extends
-                AdvancedMQTTEndpointConsumerBuilder, AdvancedMQTTEndpointProducerBuilder {
-        default MQTTEndpointBuilder basic() {
-            return (MQTTEndpointBuilder) this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointBuilder basicPropertyBinding(
-                boolean basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointBuilder basicPropertyBinding(
-                String basicPropertyBinding) {
-            doSetProperty("basicPropertyBinding", basicPropertyBinding);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option is a: <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointBuilder synchronous(boolean synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * 
-         * The option will be converted to a <code>boolean</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedMQTTEndpointBuilder synchronous(String synchronous) {
-            doSetProperty("synchronous", synchronous);
-            return this;
-        }
-    }
-
-    /**
-     * Proxy enum for <code>org.fusesource.mqtt.client.QoS</code> enum.
-     */
-    enum QoS {
-        AT_MOST_ONCE,
-        AT_LEAST_ONCE,
-        EXACTLY_ONCE;
-    }
-    /**
-     * MQTT (camel-mqtt)
-     * Component for communicating with MQTT M2M message brokers using
-     * FuseSource MQTT Client.
-     * 
-     * Category: messaging,iot
-     * Available as of version: 2.10
-     * Maven coordinates: org.apache.camel:camel-mqtt
-     * 
-     * Syntax: <code>mqtt:name</code>
-     * 
-     * Path parameter: name (required)
-     * A logical name to use which is not the topic name.
-     */
-    default MQTTEndpointBuilder mqtt(String path) {
-        class MQTTEndpointBuilderImpl extends AbstractEndpointBuilder implements MQTTEndpointBuilder, AdvancedMQTTEndpointBuilder {
-            public MQTTEndpointBuilderImpl(String path) {
-                super("mqtt", path);
-            }
-        }
-        return new MQTTEndpointBuilderImpl(path);
-    }
-}
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index ab6bc65..0af8d8c 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1767,11 +1767,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-mqtt</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-msv</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -3331,11 +3326,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-mqtt-starter</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-msv-starter</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 135d770..1c57f0c 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -1820,14 +1820,6 @@
     <bundle dependency='true'>mvn:org.mongodb/mongo-java-driver/${mongo-java-driver-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-mongodb-gridfs/${project.version}</bundle>
   </feature>
-  <feature name='camel-mqtt' version='${project.version}' start-level='50'>
-    <feature version='${project.version}'>camel-core</feature>
-    <bundle dependency='true'>mvn:org.fusesource.mqtt-client/mqtt-client/${mqtt-client-version}</bundle>
-    <bundle dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch/${hawtdispatch-version}</bundle>
-    <bundle dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch-transport/${hawtdispatch-version}</bundle>
-    <bundle dependency='true'>mvn:org.fusesource.hawtbuf/hawtbuf/${hawtbuf-version}</bundle>
-    <bundle>mvn:org.apache.camel/camel-mqtt/${project.version}</bundle>
-  </feature>
   <feature name='camel-msv' version='${project.version}' start-level='50'>
     <feature version='${project.version}'>camel-core</feature>
     <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver-bundle-version}</bundle>
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/pom.xml b/platforms/spring-boot/components-starter/camel-mqtt-starter/pom.xml
deleted file mode 100644
index 8e5f0ed..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/pom.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>components-starter</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>camel-mqtt-starter</artifactId>
-  <packaging>jar</packaging>
-  <name>Spring-Boot Starter :: Camel :: MQTT</name>
-  <description>Spring-Boot Starter for Camel MQTT client</description>
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-      <version>${spring-boot-version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-mqtt</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <!--START OF GENERATED CODE-->
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-core-starter</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-spring-boot-starter</artifactId>
-    </dependency>
-    <!--END OF GENERATED CODE-->
-  </dependencies>
-</project>
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java
deleted file mode 100644
index 9fd79f3..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentAutoConfiguration.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt.springboot;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.mqtt.MQTTComponent;
-import org.apache.camel.spi.ComponentCustomizer;
-import org.apache.camel.spi.HasId;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.ComponentConfigurationProperties;
-import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
-import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
-import org.apache.camel.spring.boot.util.GroupCondition;
-import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
-import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Lazy;
-
-/**
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@Configuration
-@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
-        MQTTComponentAutoConfiguration.GroupConditions.class})
-@AutoConfigureAfter(CamelAutoConfiguration.class)
-@EnableConfigurationProperties({ComponentConfigurationProperties.class,
-        MQTTComponentConfiguration.class})
-public class MQTTComponentAutoConfiguration {
-
-    private static final Logger LOGGER = LoggerFactory
-            .getLogger(MQTTComponentAutoConfiguration.class);
-    @Autowired
-    private ApplicationContext applicationContext;
-    @Autowired
-    private CamelContext camelContext;
-    @Autowired
-    private MQTTComponentConfiguration configuration;
-    @Autowired(required = false)
-    private List<ComponentCustomizer<MQTTComponent>> customizers;
-
-    static class GroupConditions extends GroupCondition {
-        public GroupConditions() {
-            super("camel.component", "camel.component.mqtt");
-        }
-    }
-
-    @Lazy
-    @Bean(name = "mqtt-component")
-    @ConditionalOnMissingBean(MQTTComponent.class)
-    public MQTTComponent configureMQTTComponent() throws Exception {
-        MQTTComponent component = new MQTTComponent();
-        component.setCamelContext(camelContext);
-        Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
-        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
-            Object value = entry.getValue();
-            Class<?> paramClass = value.getClass();
-            if (paramClass.getName().endsWith("NestedConfiguration")) {
-                Class nestedClass = null;
-                try {
-                    nestedClass = (Class) paramClass.getDeclaredField(
-                            "CAMEL_NESTED_CLASS").get(null);
-                    HashMap<String, Object> nestedParameters = new HashMap<>();
-                    IntrospectionSupport.getProperties(value, nestedParameters,
-                            null, false);
-                    Object nestedProperty = nestedClass.newInstance();
-                    CamelPropertiesHelper.setCamelProperties(camelContext,
-                            nestedProperty, nestedParameters, false);
-                    entry.setValue(nestedProperty);
-                } catch (NoSuchFieldException e) {
-                }
-            }
-        }
-        CamelPropertiesHelper.setCamelProperties(camelContext, component,
-                parameters, false);
-        if (ObjectHelper.isNotEmpty(customizers)) {
-            for (ComponentCustomizer<MQTTComponent> customizer : customizers) {
-                boolean useCustomizer = (customizer instanceof HasId)
-                        ? HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.mqtt.customizer",
-                                ((HasId) customizer).getId())
-                        : HierarchicalPropertiesEvaluator.evaluate(
-                                applicationContext.getEnvironment(),
-                                "camel.component.customizer",
-                                "camel.component.mqtt.customizer");
-                if (useCustomizer) {
-                    LOGGER.debug("Configure component {}, with customizer {}",
-                            component, customizer);
-                    customizer.customize(component);
-                }
-            }
-        }
-        return component;
-    }
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentConfiguration.java
deleted file mode 100644
index 0a97d7c..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/java/org/apache/camel/component/mqtt/springboot/MQTTComponentConfiguration.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.mqtt.springboot;
-
-import javax.annotation.Generated;
-import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * Component for communicating with MQTT M2M message brokers using FuseSource
- * MQTT Client.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-@ConfigurationProperties(prefix = "camel.component.mqtt")
-public class MQTTComponentConfiguration
-        extends
-            ComponentConfigurationPropertiesCommon {
-
-    /**
-     * Whether to enable auto configuration of the mqtt component. This is
-     * enabled by default.
-     */
-    private Boolean enabled;
-    /**
-     * The URI of the MQTT broker to connect too - this component also supports
-     * SSL - e.g. ssl://127.0.0.1:8883
-     */
-    private String host;
-    /**
-     * Username to be used for authentication against the MQTT broker
-     */
-    private String userName;
-    /**
-     * Password to be used for authentication against the MQTT broker
-     */
-    private String password;
-    /**
-     * Whether the component should use basic property binding (Camel 2.x) or
-     * the newer property binding with additional capabilities
-     */
-    private Boolean basicPropertyBinding = false;
-
-    public String getHost() {
-        return host;
-    }
-
-    public void setHost(String host) {
-        this.host = host;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public Boolean getBasicPropertyBinding() {
-        return basicPropertyBinding;
-    }
-
-    public void setBasicPropertyBinding(Boolean basicPropertyBinding) {
-        this.basicPropertyBinding = basicPropertyBinding;
-    }
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/LICENSE.txt b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/NOTICE.txt b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/NOTICE.txt
deleted file mode 100644
index 2e215bf..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/NOTICE.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Camel distribution.                    ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
deleted file mode 100644
index f346f35..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "properties": [
-    {
-      "defaultValue": true,
-      "name": "camel.component.mqtt.enabled",
-      "description": "Enable mqtt component",
-      "type": "java.lang.Boolean"
-    }
-  ]
-}
\ No newline at end of file
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index 03186df..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.apache.camel.component.mqtt.springboot.MQTTComponentAutoConfiguration
diff --git a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.provides b/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.provides
deleted file mode 100644
index 925219f..0000000
--- a/platforms/spring-boot/components-starter/camel-mqtt-starter/src/main/resources/META-INF/spring.provides
+++ /dev/null
@@ -1,17 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-provides: camel-mqtt
diff --git a/platforms/spring-boot/components-starter/pom.xml b/platforms/spring-boot/components-starter/pom.xml
index 4a68ea7..f47863e 100644
--- a/platforms/spring-boot/components-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/pom.xml
@@ -277,7 +277,6 @@
     <module>camel-mock-starter</module>
     <module>camel-mongodb-gridfs-starter</module>
     <module>camel-mongodb-starter</module>
-    <module>camel-mqtt-starter</module>
     <module>camel-msv-starter</module>
     <module>camel-mustache-starter</module>
     <module>camel-mvel-starter</module>
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index e0f81e4..005396cd 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -2220,16 +2220,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-mqtt</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-mqtt-starter</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-msv</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelMqttTest.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelMqttTest.java
deleted file mode 100644
index 819b0b5..0000000
--- a/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelMqttTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.karaf;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.PaxExam;
-
-@RunWith(PaxExam.class)
-public class CamelMqttTest extends BaseKarafTest {
-
-    public static final String COMPONENT = extractName(CamelMqttTest.class);
-
-    @Test
-    public void test() throws Exception {
-        testComponent(COMPONENT);
-    }
-
-
-}
\ No newline at end of file
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelMqttTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelMqttTest.java
deleted file mode 100644
index 7041c0b..0000000
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelMqttTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.springboot;
-
-import org.apache.camel.itest.springboot.util.ArquillianPackager;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.shrinkwrap.api.Archive;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-
-@RunWith(Arquillian.class)
-public class CamelMqttTest extends AbstractSpringBootTestSupport {
-
-    @Deployment
-    public static Archive<?> createSpringBootPackage() throws Exception {
-        return ArquillianPackager.springBootPackage(createTestConfig());
-    }
-
-    public static ITestConfig createTestConfig() {
-        return new ITestConfigBuilder()
-                .module(inferModuleName(CamelMqttTest.class))
-                .build();
-    }
-
-    @Test
-    public void componentTests() throws Exception {
-        this.runComponentTest(config);
-        this.runModuleUnitTestsIfEnabled(config);
-    }
-
-
-}