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

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


The following commit(s) were added to refs/heads/main by this push:
     new 18cffc58c6e CAMEL-21589: Enable manual acks mqtt5
18cffc58c6e is described below

commit 18cffc58c6e30ddb56d84cf508905ea23f0fe1a1
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jan 8 09:30:23 2025 +0100

    CAMEL-21589: Enable manual acks mqtt5
---
 .../camel/catalog/components/paho-mqtt5.json       | 50 ++++++++++----------
 .../camel/component/paho/mqtt5/paho-mqtt5.json     | 54 +++++++++++-----------
 .../paho/mqtt5/PahoMqtt5Configuration.java         |  9 ++--
 .../component/paho/mqtt5/PahoMqtt5Consumer.java    |  8 ++--
 .../mqtt5/integration/PahoMqtt5ManualAcksIT.java   | 19 +++-----
 .../dsl/PahoMqtt5ComponentBuilderFactory.java      | 24 ++++++++++
 .../dsl/PahoMqtt5EndpointBuilderFactory.java       | 42 +++++++++++++++++
 7 files changed, 134 insertions(+), 72 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/paho-mqtt5.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/paho-mqtt5.json
index 0e02d6e74c7..5c6a5898ba9 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/paho-mqtt5.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/paho-mqtt5.json
@@ -45,17 +45,18 @@
     "willRetained": { "index": 18, "kind": "property", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client u [...]
     "willTopic": { "index": 19, "kind": "property", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses its [...]
     "bridgeErrorHandler": { "index": 20, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the lik [...]
-    "lazyStartProducer": { "index": 21, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 fai [...]
-    "autowiredEnabled": { "index": 22, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
-    "client": { "index": 23, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.eclipse.paho.mqttv5.client.MqttClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a shared Paho 
client" },
-    "customWebSocketHeaders": { "index": 24, "kind": "property", 
"displayName": "Custom Web Socket Headers", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Custom 
WebSocket Headers for th [...]
-    "executorServiceTimeout": { "index": 25, "kind": "property", 
"displayName": "Executor Service Timeout", "group": "advanced", "label": 
"advanced", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set the time in seconds 
that the executor service should wait when  [...]
-    "httpsHostnameVerificationEnabled": { "index": 26, "kind": "property", 
"displayName": "Https Hostname Verification Enabled", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Whether SSL 
HostnameVerifier is enabled [...]
-    "password": { "index": 27, "kind": "property", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Password to be used for 
authentication against the MQTT broker" },
-    "socketFactory": { "index": 28, "kind": "property", "displayName": "Socket 
Factory", "group": "security", "label": "security", "required": false, "type": 
"object", "javaType": "javax.net.SocketFactory", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SocketFactory 
to use. This allows an application to apply its own policies ar [...]
-    "sslClientProps": { "index": 29, "kind": "property", "displayName": "Ssl 
Client Props", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "java.util.Properties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SSL properties 
for the connection. Note that these properties are only valid  [...]
-    "sslHostnameVerifier": { "index": 30, "kind": "property", "displayName": 
"Ssl Hostname Verifier", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the 
HostnameVerifier for the SSL connection. Note that it wil [...]
-    "userName": { "index": 31, "kind": "property", "displayName": "User Name", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Username to be used for 
authentication against the MQTT broker" }
+    "manualAcksEnabled": { "index": 21, "kind": "property", "displayName": 
"Manual Acks Enabled", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By defaul [...]
+    "lazyStartProducer": { "index": 22, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 fai [...]
+    "autowiredEnabled": { "index": 23, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "client": { "index": 24, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.eclipse.paho.mqttv5.client.MqttClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a shared Paho 
client" },
+    "customWebSocketHeaders": { "index": 25, "kind": "property", 
"displayName": "Custom Web Socket Headers", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Custom 
WebSocket Headers for th [...]
+    "executorServiceTimeout": { "index": 26, "kind": "property", 
"displayName": "Executor Service Timeout", "group": "advanced", "label": 
"advanced", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set the time in seconds 
that the executor service should wait when  [...]
+    "httpsHostnameVerificationEnabled": { "index": 27, "kind": "property", 
"displayName": "Https Hostname Verification Enabled", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Whether SSL 
HostnameVerifier is enabled [...]
+    "password": { "index": 28, "kind": "property", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Password to be used for 
authentication against the MQTT broker" },
+    "socketFactory": { "index": 29, "kind": "property", "displayName": "Socket 
Factory", "group": "security", "label": "security", "required": false, "type": 
"object", "javaType": "javax.net.SocketFactory", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SocketFactory 
to use. This allows an application to apply its own policies ar [...]
+    "sslClientProps": { "index": 30, "kind": "property", "displayName": "Ssl 
Client Props", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "java.util.Properties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SSL properties 
for the connection. Note that these properties are only valid  [...]
+    "sslHostnameVerifier": { "index": 31, "kind": "property", "displayName": 
"Ssl Hostname Verifier", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the 
HostnameVerifier for the SSL connection. Note that it wil [...]
+    "userName": { "index": 32, "kind": "property", "displayName": "User Name", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Username to be used for 
authentication against the MQTT broker" }
   },
   "headers": {
     "CamelMqttTopic": { "index": 0, "kind": "header", "displayName": "", 
"group": "consumer", "label": "consumer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The name of the topic.", "constantName": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Constants#MQTT_TOPIC" },
@@ -86,18 +87,19 @@
     "willQos": { "index": 17, "kind": "parameter", "displayName": "Will Qos", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses [...]
     "willRetained": { "index": 18, "kind": "parameter", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client  [...]
     "willTopic": { "index": 19, "kind": "parameter", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses it [...]
-    "bridgeErrorHandler": { "index": 20, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
-    "exceptionHandler": { "index": 21, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
-    "exchangePattern": { "index": 22, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "lazyStartProducer": { "index": 23, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "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 produ [...]
-    "client": { "index": 24, "kind": "parameter", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.eclipse.paho.mqttv5.client.MqttClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use an existing mqtt 
client" },
-    "customWebSocketHeaders": { "index": 25, "kind": "parameter", 
"displayName": "Custom Web Socket Headers", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Custom 
WebSocket Headers for t [...]
-    "executorServiceTimeout": { "index": 26, "kind": "parameter", 
"displayName": "Executor Service Timeout", "group": "advanced", "label": 
"advanced", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set the time in seconds 
that the executor service should wait when [...]
-    "httpsHostnameVerificationEnabled": { "index": 27, "kind": "parameter", 
"displayName": "Https Hostname Verification Enabled", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Whether SSL 
HostnameVerifier is enable [...]
-    "password": { "index": 28, "kind": "parameter", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Password to be used for 
authentication against the MQTT broker" },
-    "socketFactory": { "index": 29, "kind": "parameter", "displayName": 
"Socket Factory", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "javax.net.SocketFactory", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SocketFactory 
to use. This allows an application to apply its own policies a [...]
-    "sslClientProps": { "index": 30, "kind": "parameter", "displayName": "Ssl 
Client Props", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "java.util.Properties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SSL properties 
for the connection. Note that these properties are only valid [...]
-    "sslHostnameVerifier": { "index": 31, "kind": "parameter", "displayName": 
"Ssl Hostname Verifier", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the 
HostnameVerifier for the SSL connection. Note that it wi [...]
-    "userName": { "index": 32, "kind": "parameter", "displayName": "User 
Name", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Username to be used for 
authentication against the MQTT broker" }
+    "manualAcksEnabled": { "index": 20, "kind": "parameter", "displayName": 
"Manual Acks Enabled", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By defau [...]
+    "bridgeErrorHandler": { "index": 21, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 22, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 23, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "index": 24, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "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 produ [...]
+    "client": { "index": 25, "kind": "parameter", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.eclipse.paho.mqttv5.client.MqttClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use an existing mqtt 
client" },
+    "customWebSocketHeaders": { "index": 26, "kind": "parameter", 
"displayName": "Custom Web Socket Headers", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.String>", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Custom 
WebSocket Headers for t [...]
+    "executorServiceTimeout": { "index": 27, "kind": "parameter", 
"displayName": "Executor Service Timeout", "group": "advanced", "label": 
"advanced", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set the time in seconds 
that the executor service should wait when [...]
+    "httpsHostnameVerificationEnabled": { "index": 28, "kind": "parameter", 
"displayName": "Https Hostname Verification Enabled", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Whether SSL 
HostnameVerifier is enable [...]
+    "password": { "index": 29, "kind": "parameter", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Password to be used for 
authentication against the MQTT broker" },
+    "socketFactory": { "index": 30, "kind": "parameter", "displayName": 
"Socket Factory", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "javax.net.SocketFactory", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SocketFactory 
to use. This allows an application to apply its own policies a [...]
+    "sslClientProps": { "index": 31, "kind": "parameter", "displayName": "Ssl 
Client Props", "group": "security", "label": "security", "required": false, 
"type": "object", "javaType": "java.util.Properties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the SSL properties 
for the connection. Note that these properties are only valid [...]
+    "sslHostnameVerifier": { "index": 32, "kind": "parameter", "displayName": 
"Ssl Hostname Verifier", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the 
HostnameVerifier for the SSL connection. Note that it wi [...]
+    "userName": { "index": 33, "kind": "parameter", "displayName": "User 
Name", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Username to be used for 
authentication against the MQTT broker" }
   }
 }
diff --git 
a/components/camel-paho-mqtt5/src/generated/resources/META-INF/org/apache/camel/component/paho/mqtt5/paho-mqtt5.json
 
b/components/camel-paho-mqtt5/src/generated/resources/META-INF/org/apache/camel/component/paho/mqtt5/paho-mqtt5.json
index b53556f6b07..5c6a5898ba9 100644
--- 
a/components/camel-paho-mqtt5/src/generated/resources/META-INF/org/apache/camel/component/paho/mqtt5/paho-mqtt5.json
+++ 
b/components/camel-paho-mqtt5/src/generated/resources/META-INF/org/apache/camel/component/paho/mqtt5/paho-mqtt5.json
@@ -32,20 +32,20 @@
     "connectionTimeout": { "index": 5, "kind": "property", "displayName": 
"Connection Timeout", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the connection 
timeout value. This value, measured in seconds, defines the maximum  [...]
     "filePersistenceDirectory": { "index": 6, "kind": "property", 
"displayName": "File Persistence Directory", "group": "common", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Base directory used by 
file persistence. Will by default use user directory." },
     "keepAliveInterval": { "index": 7, "kind": "property", "displayName": 
"Keep Alive Interval", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 60, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the keep alive 
interval. This value, measured in seconds, defines the maximum time [...]
-    "manualAcksEnabled": { "index": 8, "kind": "property", "displayName": 
"Manual Acks Enabled", "group": "common", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By default, this is  [...]
-    "maxReconnectDelay": { "index": 9, "kind": "property", "displayName": "Max 
Reconnect Delay", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 128000, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Get the maximum time (in 
millis) to wait between reconnects" },
-    "persistence": { "index": 10, "kind": "property", "displayName": 
"Persistence", "group": "common", "label": "", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Persistence", "enum": [ "FILE", 
"MEMORY" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MEMORY", "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client per [...]
-    "qos": { "index": 11, "kind": "property", "displayName": "Qos", "group": 
"common", "label": "", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client quality of 
service level (0-2)." },
-    "receiveMaximum": { "index": 12, "kind": "property", "displayName": 
"Receive Maximum", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 65535, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Receive 
Maximum. This value represents the limit of QoS 1 and QoS 2 publications  [...]
-    "retained": { "index": 13, "kind": "property", "displayName": "Retained", 
"group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Retain option" },
-    "serverURIs": { "index": 14, "kind": "property", "displayName": "Server 
URIs", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set a list of one or 
more serverURIs the client may connect to. Multiple servers can be separated by 
comma. E [...]
-    "sessionExpiryInterval": { "index": 15, "kind": "property", "displayName": 
"Session Expiry Interval", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Session Expiry 
Interval. This value, measured in seconds, defines th [...]
-    "willMqttProperties": { "index": 16, "kind": "property", "displayName": 
"Will Mqtt Properties", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"org.eclipse.paho.mqttv5.common.packet.MqttProperties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connectio [...]
-    "willPayload": { "index": 17, "kind": "property", "displayName": "Will 
Payload", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses [...]
-    "willQos": { "index": 18, "kind": "property", "displayName": "Will Qos", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses  [...]
-    "willRetained": { "index": 19, "kind": "property", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client u [...]
-    "willTopic": { "index": 20, "kind": "property", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses its [...]
-    "bridgeErrorHandler": { "index": 21, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the lik [...]
+    "maxReconnectDelay": { "index": 8, "kind": "property", "displayName": "Max 
Reconnect Delay", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 128000, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Get the maximum time (in 
millis) to wait between reconnects" },
+    "persistence": { "index": 9, "kind": "property", "displayName": 
"Persistence", "group": "common", "label": "", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Persistence", "enum": [ "FILE", 
"MEMORY" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MEMORY", "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client pers [...]
+    "qos": { "index": 10, "kind": "property", "displayName": "Qos", "group": 
"common", "label": "", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client quality of 
service level (0-2)." },
+    "receiveMaximum": { "index": 11, "kind": "property", "displayName": 
"Receive Maximum", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 65535, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Receive 
Maximum. This value represents the limit of QoS 1 and QoS 2 publications  [...]
+    "retained": { "index": 12, "kind": "property", "displayName": "Retained", 
"group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Retain option" },
+    "serverURIs": { "index": 13, "kind": "property", "displayName": "Server 
URIs", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set a list of one or 
more serverURIs the client may connect to. Multiple servers can be separated by 
comma. E [...]
+    "sessionExpiryInterval": { "index": 14, "kind": "property", "displayName": 
"Session Expiry Interval", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Session Expiry 
Interval. This value, measured in seconds, defines th [...]
+    "willMqttProperties": { "index": 15, "kind": "property", "displayName": 
"Will Mqtt Properties", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"org.eclipse.paho.mqttv5.common.packet.MqttProperties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connectio [...]
+    "willPayload": { "index": 16, "kind": "property", "displayName": "Will 
Payload", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses [...]
+    "willQos": { "index": 17, "kind": "property", "displayName": "Will Qos", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses  [...]
+    "willRetained": { "index": 18, "kind": "property", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client u [...]
+    "willTopic": { "index": 19, "kind": "property", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses its [...]
+    "bridgeErrorHandler": { "index": 20, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the lik [...]
+    "manualAcksEnabled": { "index": 21, "kind": "property", "displayName": 
"Manual Acks Enabled", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By defaul [...]
     "lazyStartProducer": { "index": 22, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 fai [...]
     "autowiredEnabled": { "index": 23, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
     "client": { "index": 24, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.eclipse.paho.mqttv5.client.MqttClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a shared Paho 
client" },
@@ -75,19 +75,19 @@
     "connectionTimeout": { "index": 5, "kind": "parameter", "displayName": 
"Connection Timeout", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the connection 
timeout value. This value, measured in seconds, defines the maximum [...]
     "filePersistenceDirectory": { "index": 6, "kind": "parameter", 
"displayName": "File Persistence Directory", "group": "common", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Base directory used by 
file persistence. Will by default use user directory." },
     "keepAliveInterval": { "index": 7, "kind": "parameter", "displayName": 
"Keep Alive Interval", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 60, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the keep alive 
interval. This value, measured in seconds, defines the maximum tim [...]
-    "manualAcksEnabled": { "index": 8, "kind": "parameter", "displayName": 
"Manual Acks Enabled", "group": "common", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By default, this is [...]
-    "maxReconnectDelay": { "index": 9, "kind": "parameter", "displayName": 
"Max Reconnect Delay", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 128000, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Get the maximum time (in 
millis) to wait between reconnects" },
-    "persistence": { "index": 10, "kind": "parameter", "displayName": 
"Persistence", "group": "common", "label": "", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Persistence", "enum": [ "FILE", 
"MEMORY" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MEMORY", "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client pe [...]
-    "qos": { "index": 11, "kind": "parameter", "displayName": "Qos", "group": 
"common", "label": "", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client quality of 
service level (0-2)." },
-    "receiveMaximum": { "index": 12, "kind": "parameter", "displayName": 
"Receive Maximum", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 65535, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Receive 
Maximum. This value represents the limit of QoS 1 and QoS 2 publications [...]
-    "retained": { "index": 13, "kind": "parameter", "displayName": "Retained", 
"group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Retain option" },
-    "serverURIs": { "index": 14, "kind": "parameter", "displayName": "Server 
URIs", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set a list of one or 
more serverURIs the client may connect to. Multiple servers can be separated by 
comma.  [...]
-    "sessionExpiryInterval": { "index": 15, "kind": "parameter", 
"displayName": "Session Expiry Interval", "group": "common", "label": "", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Session Expiry 
Interval. This value, measured in seconds, defines t [...]
-    "willMqttProperties": { "index": 16, "kind": "parameter", "displayName": 
"Will Mqtt Properties", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"org.eclipse.paho.mqttv5.common.packet.MqttProperties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connecti [...]
-    "willPayload": { "index": 17, "kind": "parameter", "displayName": "Will 
Payload", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
lose [...]
-    "willQos": { "index": 18, "kind": "parameter", "displayName": "Will Qos", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses [...]
-    "willRetained": { "index": 19, "kind": "parameter", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client  [...]
-    "willTopic": { "index": 20, "kind": "parameter", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses it [...]
+    "maxReconnectDelay": { "index": 8, "kind": "parameter", "displayName": 
"Max Reconnect Delay", "group": "common", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 128000, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Get the maximum time (in 
millis) to wait between reconnects" },
+    "persistence": { "index": 9, "kind": "parameter", "displayName": 
"Persistence", "group": "common", "label": "", "required": false, "type": 
"object", "javaType": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Persistence", "enum": [ "FILE", 
"MEMORY" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MEMORY", "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client per [...]
+    "qos": { "index": 10, "kind": "parameter", "displayName": "Qos", "group": 
"common", "label": "", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Client quality of 
service level (0-2)." },
+    "receiveMaximum": { "index": 11, "kind": "parameter", "displayName": 
"Receive Maximum", "group": "common", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 65535, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Receive 
Maximum. This value represents the limit of QoS 1 and QoS 2 publications [...]
+    "retained": { "index": 12, "kind": "parameter", "displayName": "Retained", 
"group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Retain option" },
+    "serverURIs": { "index": 13, "kind": "parameter", "displayName": "Server 
URIs", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Set a list of one or 
more serverURIs the client may connect to. Multiple servers can be separated by 
comma.  [...]
+    "sessionExpiryInterval": { "index": 14, "kind": "parameter", 
"displayName": "Session Expiry Interval", "group": "common", "label": "", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Session Expiry 
Interval. This value, measured in seconds, defines t [...]
+    "willMqttProperties": { "index": 15, "kind": "parameter", "displayName": 
"Will Mqtt Properties", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"org.eclipse.paho.mqttv5.common.packet.MqttProperties", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connecti [...]
+    "willPayload": { "index": 16, "kind": "parameter", "displayName": "Will 
Payload", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
lose [...]
+    "willQos": { "index": 17, "kind": "parameter", "displayName": "Will Qos", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 1, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses [...]
+    "willRetained": { "index": 18, "kind": "parameter", "displayName": "Will 
Retained", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client  [...]
+    "willTopic": { "index": 19, "kind": "parameter", "displayName": "Will 
Topic", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets the Last Will and 
Testament (LWT) for the connection. In the event that this client unexpectedly 
loses it [...]
+    "manualAcksEnabled": { "index": 20, "kind": "parameter", "displayName": 
"Manual Acks Enabled", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": 
"org.apache.camel.component.paho.mqtt5.PahoMqtt5Configuration", 
"configurationField": "configuration", "description": "Sets whether to use 
manual acknowledgements for the client. By defau [...]
     "bridgeErrorHandler": { "index": 21, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
     "exceptionHandler": { "index": 22, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
     "exchangePattern": { "index": 23, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
diff --git 
a/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Configuration.java
 
b/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Configuration.java
index 69f4f25556e..a593db63515 100644
--- 
a/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Configuration.java
+++ 
b/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Configuration.java
@@ -88,7 +88,7 @@ public class PahoMqtt5Configuration implements Cloneable {
     private int executorServiceTimeout = 1;
     @UriParam(defaultValue = "-1")
     private long sessionExpiryInterval = -1;
-    @UriParam
+    @UriParam(label = "consumer")
     private boolean manualAcksEnabled;
 
     public String getClientId() {
@@ -553,9 +553,10 @@ public class PahoMqtt5Configuration implements Cloneable {
     /**
      * Sets whether to use manual acknowledgements for the client.
      *
-     * By default, this is false and message will be automatically 
acknowledged. If set to true, the acknowledgement is
-     * added in the exchange's completion callback.
-     *
+     * By default, this is false and message will be automatically 
acknowledged upon received by Camel. If set to true,
+     * the acknowledgement is deferred to be acknowledged by Camel at the end 
of processing the message. This ensures
+     * that only successfully processed messages is acknowledged, and allows 
to rollback and retry the message in case
+     * of an error during routing in Camel.
      */
     public boolean isManualAcksEnabled() {
         return this.manualAcksEnabled;
diff --git 
a/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Consumer.java
 
b/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Consumer.java
index f42ca11a13c..c129ccba178 100644
--- 
a/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Consumer.java
+++ 
b/components/camel-paho-mqtt5/src/main/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5Consumer.java
@@ -20,8 +20,8 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.spi.Synchronization;
 import org.apache.camel.support.DefaultConsumer;
+import org.apache.camel.support.SynchronizationAdapter;
 import org.eclipse.paho.mqttv5.client.IMqttToken;
 import org.eclipse.paho.mqttv5.client.MqttCallback;
 import org.eclipse.paho.mqttv5.client.MqttClient;
@@ -161,19 +161,19 @@ public class PahoMqtt5Consumer extends DefaultConsumer {
 
         exchange.setIn(paho);
         if (getEndpoint().getConfiguration().isManualAcksEnabled()) {
-            exchange.getExchangeExtension().addOnCompletion(new 
Synchronization() {
+            exchange.getExchangeExtension().addOnCompletion(new 
SynchronizationAdapter() {
                 @Override
                 public void onComplete(Exchange exchange) {
                     try {
                         
PahoMqtt5Consumer.this.client.messageArrivedComplete(mqttMessage.getId(), 
mqttMessage.getQos());
                     } catch (MqttException e) {
-                        LOG.warn("Failed to commit message with ID {} due to 
MqttException.", mqttMessage.getId());
+                        LOG.warn("Failed to commit message with ID: {} due to 
{}", mqttMessage.getId(), e.getMessage(), e);
                     }
                 }
 
                 @Override
                 public void onFailure(Exchange exchange) {
-                    LOG.error("Rollback due to error processing Exchange ID: 
{}", exchange.getExchangeId(), exchange.getException());
+                    LOG.debug("Rollback due to error processing Exchange ID: 
{}", exchange.getExchangeId());
                 }
             });
         }
diff --git 
a/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/integration/PahoMqtt5ManualAcksIT.java
 
b/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/integration/PahoMqtt5ManualAcksIT.java
index fc36f22bafc..efed64c8113 100644
--- 
a/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/integration/PahoMqtt5ManualAcksIT.java
+++ 
b/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/integration/PahoMqtt5ManualAcksIT.java
@@ -17,16 +17,12 @@
 package org.apache.camel.component.paho.mqtt5.integration;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangeExtension;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spi.Synchronization;
 import org.junit.jupiter.api.Test;
 
-import static org.mockito.Mockito.*;
-
 public class PahoMqtt5ManualAcksIT extends PahoMqtt5ITSupport {
+
     @EndpointInject("mock:test")
     MockEndpoint mock;
 
@@ -36,7 +32,8 @@ public class PahoMqtt5ManualAcksIT extends PahoMqtt5ITSupport 
{
             @Override
             public void configure() {
                 from("direct:test")
-                        .to("paho-mqtt5:queue?brokerUrl=tcp://localhost:" + 
mqttPort + "&qos=2&manualAcksEnabled=true");
+                        .to("paho-mqtt5:queue?brokerUrl=tcp://localhost:" + 
mqttPort + "&qos=2");
+
                 from("paho-mqtt5:queue?brokerUrl=tcp://localhost:" + mqttPort 
+ "&qos=2&manualAcksEnabled=true")
                         .to("mock:test");
             }
@@ -44,15 +41,11 @@ public class PahoMqtt5ManualAcksIT extends 
PahoMqtt5ITSupport {
     }
 
     @Test
-    public void testSynchronizationCallbackForManualAcks() throws Exception {
-
-        Exchange exchange = mock(Exchange.class);
-        ExchangeExtension exchangeExtension = mock(ExchangeExtension.class);
-        when(exchange.getExchangeExtension()).thenReturn(exchangeExtension);
-
+    public void testManualAcks() throws Exception {
         mock.expectedMessageCount(1);
+
         template.sendBody("direct:test", "Test Message");
 
-        verify(exchangeExtension).addOnCompletion(any(Synchronization.class));
+        mock.assertIsSatisfied();
     }
 }
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PahoMqtt5ComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PahoMqtt5ComponentBuilderFactory.java
index 7c873d4ed55..9852bfca461 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PahoMqtt5ComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PahoMqtt5ComponentBuilderFactory.java
@@ -493,6 +493,29 @@ public interface PahoMqtt5ComponentBuilderFactory {
         }
     
         
+        /**
+         * Sets whether to use manual acknowledgements for the client. By
+         * default, this is false and message will be automatically 
acknowledged
+         * upon received by Camel. If set to true, the acknowledgement is
+         * deferred to be acknowledged by Camel at the end of processing the
+         * message. This ensures that only successfully processed messages is
+         * acknowledged, and allows to rollback and retry the message in case 
of
+         * an error during routing in Camel.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param manualAcksEnabled the value to set
+         * @return the dsl builder
+         */
+        default PahoMqtt5ComponentBuilder manualAcksEnabled(boolean 
manualAcksEnabled) {
+            doSetProperty("manualAcksEnabled", manualAcksEnabled);
+            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
@@ -771,6 +794,7 @@ public interface PahoMqtt5ComponentBuilderFactory {
             case "willRetained": getOrCreateConfiguration((PahoMqtt5Component) 
component).setWillRetained((boolean) value); return true;
             case "willTopic": getOrCreateConfiguration((PahoMqtt5Component) 
component).setWillTopic((java.lang.String) value); return true;
             case "bridgeErrorHandler": ((PahoMqtt5Component) 
component).setBridgeErrorHandler((boolean) value); return true;
+            case "manualAcksEnabled": 
getOrCreateConfiguration((PahoMqtt5Component) 
component).setManualAcksEnabled((boolean) value); return true;
             case "lazyStartProducer": ((PahoMqtt5Component) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((PahoMqtt5Component) 
component).setAutowiredEnabled((boolean) value); return true;
             case "client": ((PahoMqtt5Component) 
component).setClient((org.eclipse.paho.mqttv5.client.MqttClient) value); return 
true;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PahoMqtt5EndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PahoMqtt5EndpointBuilderFactory.java
index a8c6feaae6b..f4eb97ee964 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PahoMqtt5EndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PahoMqtt5EndpointBuilderFactory.java
@@ -661,6 +661,48 @@ public interface PahoMqtt5EndpointBuilderFactory {
             doSetProperty("willTopic", willTopic);
             return this;
         }
+        /**
+         * Sets whether to use manual acknowledgements for the client. By
+         * default, this is false and message will be automatically 
acknowledged
+         * upon received by Camel. If set to true, the acknowledgement is
+         * deferred to be acknowledged by Camel at the end of processing the
+         * message. This ensures that only successfully processed messages is
+         * acknowledged, and allows to rollback and retry the message in case 
of
+         * an error during routing in Camel.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param manualAcksEnabled the value to set
+         * @return the dsl builder
+         */
+        default PahoMqtt5EndpointConsumerBuilder manualAcksEnabled(boolean 
manualAcksEnabled) {
+            doSetProperty("manualAcksEnabled", manualAcksEnabled);
+            return this;
+        }
+        /**
+         * Sets whether to use manual acknowledgements for the client. By
+         * default, this is false and message will be automatically 
acknowledged
+         * upon received by Camel. If set to true, the acknowledgement is
+         * deferred to be acknowledged by Camel at the end of processing the
+         * message. This ensures that only successfully processed messages is
+         * acknowledged, and allows to rollback and retry the message in case 
of
+         * an error during routing in Camel.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param manualAcksEnabled the value to set
+         * @return the dsl builder
+         */
+        default PahoMqtt5EndpointConsumerBuilder manualAcksEnabled(String 
manualAcksEnabled) {
+            doSetProperty("manualAcksEnabled", manualAcksEnabled);
+            return this;
+        }
         /**
          * Whether SSL HostnameVerifier is enabled or not. The default value is
          * true.

Reply via email to