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

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

commit 96f8de60006d4653104fe99fba7a9cce4b07bfbc
Author: klevy-toasttab <[email protected]>
AuthorDate: Fri Mar 13 11:24:33 2026 -0700

    CAMEL-23195 Implement camel-pulsar SubscriptionMode configuration
---
 .../pulsar/PulsarComponentConfigurer.java          |  6 ++
 .../component/pulsar/PulsarEndpointConfigurer.java |  6 ++
 .../component/pulsar/PulsarEndpointUriFactory.java |  3 +-
 .../org/apache/camel/component/pulsar/pulsar.json  | 96 +++++++++++-----------
 .../component/pulsar/PulsarConfiguration.java      | 17 ++++
 .../consumers/CommonCreationStrategyImpl.java      |  1 +
 .../pulsar/utils/consumers/SubscriptionMode.java   | 32 ++++++++
 .../component/pulsar/PulsarComponentTest.java      | 15 ++++
 8 files changed, 128 insertions(+), 48 deletions(-)

diff --git 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarComponentConfigurer.java
 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarComponentConfigurer.java
index 1a5cdf139afe..50851d87e4a4 100644
--- 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarComponentConfigurer.java
+++ 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarComponentConfigurer.java
@@ -117,6 +117,8 @@ public class PulsarComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "serviceUrl": 
getOrCreateConfiguration(target).setServiceUrl(property(camelContext, 
java.lang.String.class, value)); return true;
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": 
getOrCreateConfiguration(target).setSubscriptionInitialPosition(property(camelContext,
 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition.class,
 value)); return true;
+        case "subscriptionmode":
+        case "subscriptionMode": 
getOrCreateConfiguration(target).setSubscriptionMode(property(camelContext, 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode.class, 
value)); return true;
         case "subscriptionname":
         case "subscriptionName": 
getOrCreateConfiguration(target).setSubscriptionName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "subscriptiontopicsmode":
@@ -224,6 +226,8 @@ public class PulsarComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "serviceUrl": return java.lang.String.class;
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": return 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition.class;
+        case "subscriptionmode":
+        case "subscriptionMode": return 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode.class;
         case "subscriptionname":
         case "subscriptionName": return java.lang.String.class;
         case "subscriptiontopicsmode":
@@ -327,6 +331,8 @@ public class PulsarComponentConfigurer extends 
PropertyConfigurerSupport impleme
         case "serviceUrl": return 
getOrCreateConfiguration(target).getServiceUrl();
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": return 
getOrCreateConfiguration(target).getSubscriptionInitialPosition();
+        case "subscriptionmode":
+        case "subscriptionMode": return 
getOrCreateConfiguration(target).getSubscriptionMode();
         case "subscriptionname":
         case "subscriptionName": return 
getOrCreateConfiguration(target).getSubscriptionName();
         case "subscriptiontopicsmode":
diff --git 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointConfigurer.java
 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointConfigurer.java
index bd3abd65f937..21353b931165 100644
--- 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointConfigurer.java
+++ 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointConfigurer.java
@@ -105,6 +105,8 @@ public class PulsarEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "serviceUrl": 
target.getPulsarConfiguration().setServiceUrl(property(camelContext, 
java.lang.String.class, value)); return true;
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": 
target.getPulsarConfiguration().setSubscriptionInitialPosition(property(camelContext,
 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition.class,
 value)); return true;
+        case "subscriptionmode":
+        case "subscriptionMode": 
target.getPulsarConfiguration().setSubscriptionMode(property(camelContext, 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode.class, 
value)); return true;
         case "subscriptionname":
         case "subscriptionName": 
target.getPulsarConfiguration().setSubscriptionName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "subscriptiontopicsmode":
@@ -202,6 +204,8 @@ public class PulsarEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "serviceUrl": return java.lang.String.class;
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": return 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition.class;
+        case "subscriptionmode":
+        case "subscriptionMode": return 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode.class;
         case "subscriptionname":
         case "subscriptionName": return java.lang.String.class;
         case "subscriptiontopicsmode":
@@ -300,6 +304,8 @@ public class PulsarEndpointConfigurer extends 
PropertyConfigurerSupport implemen
         case "serviceUrl": return 
target.getPulsarConfiguration().getServiceUrl();
         case "subscriptioninitialposition":
         case "subscriptionInitialPosition": return 
target.getPulsarConfiguration().getSubscriptionInitialPosition();
+        case "subscriptionmode":
+        case "subscriptionMode": return 
target.getPulsarConfiguration().getSubscriptionMode();
         case "subscriptionname":
         case "subscriptionName": return 
target.getPulsarConfiguration().getSubscriptionName();
         case "subscriptiontopicsmode":
diff --git 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointUriFactory.java
 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointUriFactory.java
index 44ca26060955..516e792fe468 100644
--- 
a/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointUriFactory.java
+++ 
b/components/camel-pulsar/src/generated/java/org/apache/camel/component/pulsar/PulsarEndpointUriFactory.java
@@ -23,7 +23,7 @@ public class PulsarEndpointUriFactory extends 
org.apache.camel.support.component
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(49);
+        Set<String> props = new HashSet<>(50);
         props.add("ackGroupTimeMillis");
         props.add("ackTimeoutMillis");
         props.add("ackTimeoutRedeliveryBackoff");
@@ -67,6 +67,7 @@ public class PulsarEndpointUriFactory extends 
org.apache.camel.support.component
         props.add("sendTimeoutMs");
         props.add("serviceUrl");
         props.add("subscriptionInitialPosition");
+        props.add("subscriptionMode");
         props.add("subscriptionName");
         props.add("subscriptionTopicsMode");
         props.add("subscriptionType");
diff --git 
a/components/camel-pulsar/src/generated/resources/META-INF/org/apache/camel/component/pulsar/pulsar.json
 
b/components/camel-pulsar/src/generated/resources/META-INF/org/apache/camel/component/pulsar/pulsar.json
index 0f3001ea4e6c..cf2e3bf4fe5f 100644
--- 
a/components/camel-pulsar/src/generated/resources/META-INF/org/apache/camel/component/pulsar/pulsar.json
+++ 
b/components/camel-pulsar/src/generated/resources/META-INF/org/apache/camel/component/pulsar/pulsar.json
@@ -48,30 +48,31 @@
     "readCompacted": { "index": 21, "kind": "property", "displayName": "Read 
Compacted", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Enable compacted topic reading." },
     "retryLetterTopic": { "index": 22, "kind": "property", "displayName": 
"Retry Letter Topic", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Name of the topic to use in retry mode. Note: 
if not set, default topic name will be topicNam [...]
     "subscriptionInitialPosition": { "index": 23, "kind": "property", 
"displayName": "Subscription Initial Position", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition",
 "enum": [ "EARLIEST", "LATEST" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "LATEST", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "config [...]
-    "subscriptionName": { "index": 24, "kind": "property", "displayName": 
"Subscription Name", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "subs", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Name of the subscription 
to use" },
-    "subscriptionTopicsMode": { "index": 25, "kind": "property", 
"displayName": "Subscription Topics Mode", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.RegexSubscriptionMode", "enum": [ 
"PersistentOnly", "NonPersistentOnly", "AllTopics" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "PersistentOnly", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"confi [...]
-    "subscriptionType": { "index": 26, "kind": "property", "displayName": 
"Subscription Type", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionType", "enum": [ 
"EXCLUSIVE", "SHARED", "FAILOVER", "KEY_SHARED" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "EXCLUSIVE", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurat [...]
-    "topicsPattern": { "index": 27, "kind": "property", "displayName": "Topics 
Pattern", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Whether the topic is a pattern (regular 
expression) that allows the consumer to subsc [...]
-    "pulsarMessageReceiptFactory": { "index": 28, "kind": "property", 
"displayName": "Pulsar Message Receipt Factory", "group": "consumer 
(advanced)", "label": "consumer,advanced", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.pulsar.PulsarMessageReceiptFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": 
"Provide a factory to create an alternate implementation of 
PulsarMessageReceipt." },
-    "batcherBuilder": { "index": 29, "kind": "property", "displayName": 
"Batcher Builder", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "org.apache.pulsar.client.api.BatcherBuilder", 
"enum": [ "DEFAULT", "KEY_BASED" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "DEFAULT", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Control ba [...]
-    "batchingEnabled": { "index": 30, "kind": "property", "displayName": 
"Batching Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Control whether 
automatic batching of messages is enabled for the producer." },
-    "batchingMaxMessages": { "index": 31, "kind": "property", "displayName": 
"Batching Max Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "The maximum size to batch messages." },
-    "batchingMaxPublishDelayMicros": { "index": 32, "kind": "property", 
"displayName": "Batching Max Publish Delay Micros", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "long", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "The maximum time period 
within which the messages sent [...]
-    "blockIfQueueFull": { "index": 33, "kind": "property", "displayName": 
"Block If Queue Full", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Whether to block the 
producing thread if pending messages queue is full or to [...]
-    "chunkingEnabled": { "index": 34, "kind": "property", "displayName": 
"Chunking Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Control whether chunking 
of messages is enabled for the producer." },
-    "compressionType": { "index": 35, "kind": "property", "displayName": 
"Compression Type", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.CompressionType", "enum": [ "NONE", "LZ4", 
"ZLIB", "ZSTD", "SNAPPY" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "descript [...]
-    "hashingScheme": { "index": 36, "kind": "property", "displayName": 
"Hashing Scheme", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "JavaStringHash", 
"Murmur3_32Hash" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "JavaStringHash", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Hashing function to  [...]
-    "initialSequenceId": { "index": 37, "kind": "property", "displayName": 
"Initial Sequence Id", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "The first message published will have a 
sequence Id of initialSequenceId 1." },
-    "lazyStartProducer": { "index": 38, "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 [...]
-    "maxPendingMessages": { "index": 39, "kind": "property", "displayName": 
"Max Pending Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Size of the pending massages queue. When the 
queue is full, by default, any fur [...]
-    "maxPendingMessagesAcrossPartitions": { "index": 40, "kind": "property", 
"displayName": "Max Pending Messages Across Partitions", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "int", 
"deprecated": true, "autowired": false, "secret": false, "defaultValue": 50000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "The maximum number of 
pending messages for pa [...]
-    "messageRouter": { "index": 41, "kind": "property", "displayName": 
"Message Router", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": "org.apache.pulsar.client.api.MessageRouter", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Custom Message Router to use" },
-    "messageRoutingMode": { "index": 42, "kind": "property", "displayName": 
"Message Routing Mode", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.MessageRoutingMode", "enum": [ "SinglePartition", 
"RoundRobinPartition", "CustomPartition" ], "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "RoundRobinPartition", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"co [...]
-    "producerName": { "index": 43, "kind": "property", "displayName": 
"Producer Name", "group": "producer", "label": "producer", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Name of the producer. If unset, lets Pulsar 
select a unique identifier." },
-    "sendTimeoutMs": { "index": 44, "kind": "property", "displayName": "Send 
Timeout Ms", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Send timeout in milliseconds" },
-    "autoConfiguration": { "index": 45, "kind": "property", "displayName": 
"Auto Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.pulsar.utils.AutoConfiguration", "deprecated": 
false, "autowired": false, "secret": false, "description": "The pulsar auto 
configuration" },
-    "autowiredEnabled": { "index": 46, "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  [...]
-    "pulsarClient": { "index": 47, "kind": "property", "displayName": "Pulsar 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.pulsar.client.api.PulsarClient", 
"deprecated": false, "autowired": true, "secret": false, "description": "The 
pulsar client" }
+    "subscriptionMode": { "index": 24, "kind": "property", "displayName": 
"Subscription Mode", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode", "enum": [ 
"DURABLE", "NON_DURABLE" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "DURABLE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration [...]
+    "subscriptionName": { "index": 25, "kind": "property", "displayName": 
"Subscription Name", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "subs", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Name of the subscription 
to use" },
+    "subscriptionTopicsMode": { "index": 26, "kind": "property", 
"displayName": "Subscription Topics Mode", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.RegexSubscriptionMode", "enum": [ 
"PersistentOnly", "NonPersistentOnly", "AllTopics" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "PersistentOnly", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"confi [...]
+    "subscriptionType": { "index": 27, "kind": "property", "displayName": 
"Subscription Type", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionType", "enum": [ 
"EXCLUSIVE", "SHARED", "FAILOVER", "KEY_SHARED" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "EXCLUSIVE", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurat [...]
+    "topicsPattern": { "index": 28, "kind": "property", "displayName": "Topics 
Pattern", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Whether the topic is a pattern (regular 
expression) that allows the consumer to subsc [...]
+    "pulsarMessageReceiptFactory": { "index": 29, "kind": "property", 
"displayName": "Pulsar Message Receipt Factory", "group": "consumer 
(advanced)", "label": "consumer,advanced", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.pulsar.PulsarMessageReceiptFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": 
"Provide a factory to create an alternate implementation of 
PulsarMessageReceipt." },
+    "batcherBuilder": { "index": 30, "kind": "property", "displayName": 
"Batcher Builder", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "org.apache.pulsar.client.api.BatcherBuilder", 
"enum": [ "DEFAULT", "KEY_BASED" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "DEFAULT", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Control ba [...]
+    "batchingEnabled": { "index": 31, "kind": "property", "displayName": 
"Batching Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Control whether 
automatic batching of messages is enabled for the producer." },
+    "batchingMaxMessages": { "index": 32, "kind": "property", "displayName": 
"Batching Max Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "The maximum size to batch messages." },
+    "batchingMaxPublishDelayMicros": { "index": 33, "kind": "property", 
"displayName": "Batching Max Publish Delay Micros", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "long", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "The maximum time period 
within which the messages sent [...]
+    "blockIfQueueFull": { "index": 34, "kind": "property", "displayName": 
"Block If Queue Full", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Whether to block the 
producing thread if pending messages queue is full or to [...]
+    "chunkingEnabled": { "index": 35, "kind": "property", "displayName": 
"Chunking Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "Control whether chunking 
of messages is enabled for the producer." },
+    "compressionType": { "index": 36, "kind": "property", "displayName": 
"Compression Type", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.CompressionType", "enum": [ "NONE", "LZ4", 
"ZLIB", "ZSTD", "SNAPPY" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "descript [...]
+    "hashingScheme": { "index": 37, "kind": "property", "displayName": 
"Hashing Scheme", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "JavaStringHash", 
"Murmur3_32Hash" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "JavaStringHash", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Hashing function to  [...]
+    "initialSequenceId": { "index": 38, "kind": "property", "displayName": 
"Initial Sequence Id", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "The first message published will have a 
sequence Id of initialSequenceId 1." },
+    "lazyStartProducer": { "index": 39, "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 [...]
+    "maxPendingMessages": { "index": 40, "kind": "property", "displayName": 
"Max Pending Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Size of the pending massages queue. When the 
queue is full, by default, any fur [...]
+    "maxPendingMessagesAcrossPartitions": { "index": 41, "kind": "property", 
"displayName": "Max Pending Messages Across Partitions", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "int", 
"deprecated": true, "autowired": false, "secret": false, "defaultValue": 50000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "configuration", "description": "The maximum number of 
pending messages for pa [...]
+    "messageRouter": { "index": 42, "kind": "property", "displayName": 
"Message Router", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": "org.apache.pulsar.client.api.MessageRouter", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Custom Message Router to use" },
+    "messageRoutingMode": { "index": 43, "kind": "property", "displayName": 
"Message Routing Mode", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.MessageRoutingMode", "enum": [ "SinglePartition", 
"RoundRobinPartition", "CustomPartition" ], "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "RoundRobinPartition", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"co [...]
+    "producerName": { "index": 44, "kind": "property", "displayName": 
"Producer Name", "group": "producer", "label": "producer", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Name of the producer. If unset, lets Pulsar 
select a unique identifier." },
+    "sendTimeoutMs": { "index": 45, "kind": "property", "displayName": "Send 
Timeout Ms", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"configuration", "description": "Send timeout in milliseconds" },
+    "autoConfiguration": { "index": 46, "kind": "property", "displayName": 
"Auto Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.pulsar.utils.AutoConfiguration", "deprecated": 
false, "autowired": false, "secret": false, "description": "The pulsar auto 
configuration" },
+    "autowiredEnabled": { "index": 47, "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  [...]
+    "pulsarClient": { "index": 48, "kind": "property", "displayName": "Pulsar 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.pulsar.client.api.PulsarClient", 
"deprecated": false, "autowired": true, "secret": false, "description": "The 
pulsar client" }
   },
   "headers": {
     "properties": { "index": 0, "kind": "header", "displayName": "", "group": 
"consumer", "label": "consumer", "required": false, "javaType": "Map<String, 
String>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The properties attached to the message.", 
"constantName": 
"org.apache.camel.component.pulsar.utils.message.PulsarMessageHeaders#PROPERTIES"
 },
@@ -118,28 +119,29 @@
     "readCompacted": { "index": 23, "kind": "parameter", "displayName": "Read 
Compacted", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Enable compacted topic reading." },
     "retryLetterTopic": { "index": 24, "kind": "parameter", "displayName": 
"Retry Letter Topic", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Name of the topic to use in retry mode. 
Note: if not set, default topic name will be t [...]
     "subscriptionInitialPosition": { "index": 25, "kind": "parameter", 
"displayName": "Subscription Initial Position", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition",
 "enum": [ "EARLIEST", "LATEST" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "LATEST", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "confi [...]
-    "subscriptionName": { "index": 26, "kind": "parameter", "displayName": 
"Subscription Name", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "subs", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Name of the 
subscription to use" },
-    "subscriptionTopicsMode": { "index": 27, "kind": "parameter", 
"displayName": "Subscription Topics Mode", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.RegexSubscriptionMode", "enum": [ 
"PersistentOnly", "NonPersistentOnly", "AllTopics" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "PersistentOnly", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"conf [...]
-    "subscriptionType": { "index": 28, "kind": "parameter", "displayName": 
"Subscription Type", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionType", "enum": [ 
"EXCLUSIVE", "SHARED", "FAILOVER", "KEY_SHARED" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "EXCLUSIVE", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configura [...]
-    "topicsPattern": { "index": 29, "kind": "parameter", "displayName": 
"Topics Pattern", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Whether the topic is a pattern (regular 
expression) that allows the consumer t [...]
-    "bridgeErrorHandler": { "index": 30, "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": 31, "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": 32, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "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." },
-    "batcherBuilder": { "index": 33, "kind": "parameter", "displayName": 
"Batcher Builder", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "org.apache.pulsar.client.api.BatcherBuilder", 
"enum": [ "DEFAULT", "KEY_BASED" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "DEFAULT", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Con [...]
-    "batchingEnabled": { "index": 34, "kind": "parameter", "displayName": 
"Batching Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Control whether 
automatic batching of messages is enabled for the producer." },
-    "batchingMaxMessages": { "index": 35, "kind": "parameter", "displayName": 
"Batching Max Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "The maximum size to batch messages." },
-    "batchingMaxPublishDelayMicros": { "index": 36, "kind": "parameter", 
"displayName": "Batching Max Publish Delay Micros", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "long", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "The maximum time 
period within which the messag [...]
-    "blockIfQueueFull": { "index": 37, "kind": "parameter", "displayName": 
"Block If Queue Full", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Whether to block 
the producing thread if pending messages queue is ful [...]
-    "chunkingEnabled": { "index": 38, "kind": "parameter", "displayName": 
"Chunking Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Control whether 
chunking of messages is enabled for the producer." },
-    "compressionType": { "index": 39, "kind": "parameter", "displayName": 
"Compression Type", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.CompressionType", "enum": [ "NONE", "LZ4", 
"ZLIB", "ZSTD", "SNAPPY" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "d [...]
-    "hashingScheme": { "index": 40, "kind": "parameter", "displayName": 
"Hashing Scheme", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "JavaStringHash", 
"Murmur3_32Hash" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "JavaStringHash", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Hashing funct [...]
-    "initialSequenceId": { "index": 41, "kind": "parameter", "displayName": 
"Initial Sequence Id", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "The first message published will have a 
sequence Id of initialSequenceId 1." },
-    "maxPendingMessages": { "index": 42, "kind": "parameter", "displayName": 
"Max Pending Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Size of the pending massages queue. When 
the queue is full, by default,  [...]
-    "maxPendingMessagesAcrossPartitions": { "index": 43, "kind": "parameter", 
"displayName": "Max Pending Messages Across Partitions", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "int", 
"deprecated": true, "autowired": false, "secret": false, "defaultValue": 50000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "The maximum number 
of pending messages [...]
-    "messageRouter": { "index": 44, "kind": "parameter", "displayName": 
"Message Router", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": "org.apache.pulsar.client.api.MessageRouter", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Custom Message Router to use" },
-    "messageRoutingMode": { "index": 45, "kind": "parameter", "displayName": 
"Message Routing Mode", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.MessageRoutingMode", "enum": [ "SinglePartition", 
"RoundRobinPartition", "CustomPartition" ], "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "RoundRobinPartition", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"c [...]
-    "producerName": { "index": 46, "kind": "parameter", "displayName": 
"Producer Name", "group": "producer", "label": "producer", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Name of the producer. If unset, lets 
Pulsar select a unique identifier." },
-    "sendTimeoutMs": { "index": 47, "kind": "parameter", "displayName": "Send 
Timeout Ms", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Send timeout in milliseconds" },
-    "lazyStartProducer": { "index": 48, "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 [...]
+    "subscriptionMode": { "index": 26, "kind": "parameter", "displayName": 
"Subscription Mode", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode", "enum": [ 
"DURABLE", "NON_DURABLE" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "DURABLE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfig [...]
+    "subscriptionName": { "index": 27, "kind": "parameter", "displayName": 
"Subscription Name", "group": "consumer", "label": "consumer", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "subs", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Name of the 
subscription to use" },
+    "subscriptionTopicsMode": { "index": 28, "kind": "parameter", 
"displayName": "Subscription Topics Mode", "group": "consumer", "label": 
"consumer", "required": false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.RegexSubscriptionMode", "enum": [ 
"PersistentOnly", "NonPersistentOnly", "AllTopics" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "PersistentOnly", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"conf [...]
+    "subscriptionType": { "index": 29, "kind": "parameter", "displayName": 
"Subscription Type", "group": "consumer", "label": "consumer", "required": 
false, "type": "enum", "javaType": 
"org.apache.camel.component.pulsar.utils.consumers.SubscriptionType", "enum": [ 
"EXCLUSIVE", "SHARED", "FAILOVER", "KEY_SHARED" ], "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "EXCLUSIVE", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configura [...]
+    "topicsPattern": { "index": 30, "kind": "parameter", "displayName": 
"Topics Pattern", "group": "consumer", "label": "consumer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Whether the topic is a pattern (regular 
expression) that allows the consumer t [...]
+    "bridgeErrorHandler": { "index": 31, "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": 32, "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": 33, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "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." },
+    "batcherBuilder": { "index": 34, "kind": "parameter", "displayName": 
"Batcher Builder", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "org.apache.pulsar.client.api.BatcherBuilder", 
"enum": [ "DEFAULT", "KEY_BASED" ], "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "DEFAULT", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Con [...]
+    "batchingEnabled": { "index": 35, "kind": "parameter", "displayName": 
"Batching Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Control whether 
automatic batching of messages is enabled for the producer." },
+    "batchingMaxMessages": { "index": 36, "kind": "parameter", "displayName": 
"Batching Max Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "The maximum size to batch messages." },
+    "batchingMaxPublishDelayMicros": { "index": 37, "kind": "parameter", 
"displayName": "Batching Max Publish Delay Micros", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "long", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "The maximum time 
period within which the messag [...]
+    "blockIfQueueFull": { "index": 38, "kind": "parameter", "displayName": 
"Block If Queue Full", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Whether to block 
the producing thread if pending messages queue is ful [...]
+    "chunkingEnabled": { "index": 39, "kind": "parameter", "displayName": 
"Chunking Enabled", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "Control whether 
chunking of messages is enabled for the producer." },
+    "compressionType": { "index": 40, "kind": "parameter", "displayName": 
"Compression Type", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.CompressionType", "enum": [ "NONE", "LZ4", 
"ZLIB", "ZSTD", "SNAPPY" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "NONE", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "d [...]
+    "hashingScheme": { "index": 41, "kind": "parameter", "displayName": 
"Hashing Scheme", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "JavaStringHash", 
"Murmur3_32Hash" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "JavaStringHash", "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Hashing funct [...]
+    "initialSequenceId": { "index": 42, "kind": "parameter", "displayName": 
"Initial Sequence Id", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": -1, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "The first message published will have a 
sequence Id of initialSequenceId 1." },
+    "maxPendingMessages": { "index": 43, "kind": "parameter", "displayName": 
"Max Pending Messages", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Size of the pending massages queue. When 
the queue is full, by default,  [...]
+    "maxPendingMessagesAcrossPartitions": { "index": 44, "kind": "parameter", 
"displayName": "Max Pending Messages Across Partitions", "group": "producer", 
"label": "producer", "required": false, "type": "integer", "javaType": "int", 
"deprecated": true, "autowired": false, "secret": false, "defaultValue": 50000, 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"configurationField": "pulsarConfiguration", "description": "The maximum number 
of pending messages [...]
+    "messageRouter": { "index": 45, "kind": "parameter", "displayName": 
"Message Router", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": "org.apache.pulsar.client.api.MessageRouter", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Custom Message Router to use" },
+    "messageRoutingMode": { "index": 46, "kind": "parameter", "displayName": 
"Message Routing Mode", "group": "producer", "label": "producer", "required": 
false, "type": "enum", "javaType": 
"org.apache.pulsar.client.api.MessageRoutingMode", "enum": [ "SinglePartition", 
"RoundRobinPartition", "CustomPartition" ], "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "RoundRobinPartition", 
"configurationClass": "org.apache.camel.component.pulsar.PulsarConfiguration", 
"c [...]
+    "producerName": { "index": 47, "kind": "parameter", "displayName": 
"Producer Name", "group": "producer", "label": "producer", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Name of the producer. If unset, lets 
Pulsar select a unique identifier." },
+    "sendTimeoutMs": { "index": 48, "kind": "parameter", "displayName": "Send 
Timeout Ms", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.pulsar.PulsarConfiguration", "configurationField": 
"pulsarConfiguration", "description": "Send timeout in milliseconds" },
+    "lazyStartProducer": { "index": 49, "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 [...]
   }
 }
diff --git 
a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/PulsarConfiguration.java
 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/PulsarConfiguration.java
index 08c47fe1528c..b6890fa77f41 100644
--- 
a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/PulsarConfiguration.java
+++ 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/PulsarConfiguration.java
@@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.RuntimeCamelException;
 import 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition;
+import org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode;
 import org.apache.camel.component.pulsar.utils.consumers.SubscriptionType;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
@@ -31,6 +32,7 @@ import org.apache.pulsar.client.api.RedeliveryBackoff;
 import org.apache.pulsar.client.api.RegexSubscriptionMode;
 
 import static 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionInitialPosition.LATEST;
+import static 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode.DURABLE;
 import static 
org.apache.camel.component.pulsar.utils.consumers.SubscriptionType.EXCLUSIVE;
 
 @UriParams
@@ -50,6 +52,10 @@ public class PulsarConfiguration implements Cloneable {
     private String subscriptionName = "subs";
     @UriParam(label = "consumer", defaultValue = "EXCLUSIVE", enums = 
"EXCLUSIVE,SHARED,FAILOVER,KEY_SHARED")
     private SubscriptionType subscriptionType = EXCLUSIVE;
+    @UriParam(label = "consumer", defaultValue = "DURABLE", enums = 
"DURABLE,NON_DURABLE",
+              description = "Determines the subscription mode for the 
consumer. Durable subscriptions persist the cursor position "
+                            + "if the consumer disconnects while non-durable 
subscriptions do not.")
+    private SubscriptionMode subscriptionMode = DURABLE;
     @UriParam(label = "consumer", defaultValue = "1")
     private int numberOfConsumers = 1;
     @UriParam(label = "consumer", defaultValue = "10")
@@ -201,6 +207,17 @@ public class PulsarConfiguration implements Cloneable {
         this.subscriptionType = subscriptionType;
     }
 
+    public SubscriptionMode getSubscriptionMode() {
+        return subscriptionMode;
+    }
+
+    /**
+     * Determines the subscription mode for the consumer 
[DURABLE|NON_DURABLE], defaults to DURABLE
+     */
+    public void setSubscriptionMode(SubscriptionMode subscriptionMode) {
+        this.subscriptionMode = subscriptionMode;
+    }
+
     public int getNumberOfConsumers() {
         return numberOfConsumers;
     }
diff --git 
a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/CommonCreationStrategyImpl.java
 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/CommonCreationStrategyImpl.java
index ba5713d80221..10c2a86697b1 100644
--- 
a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/CommonCreationStrategyImpl.java
+++ 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/CommonCreationStrategyImpl.java
@@ -61,6 +61,7 @@ public final class CommonCreationStrategyImpl {
                 .ackTimeout(endpointConfiguration.getAckTimeoutMillis(), 
TimeUnit.MILLISECONDS)
                 .subscriptionInitialPosition(
                         
endpointConfiguration.getSubscriptionInitialPosition().toPulsarSubscriptionInitialPosition())
+                
.subscriptionMode(endpointConfiguration.getSubscriptionMode().toPulsarSubscriptionMode())
                 
.acknowledgmentGroupTime(endpointConfiguration.getAckGroupTimeMillis(), 
TimeUnit.MILLISECONDS)
                 
.negativeAckRedeliveryDelay(endpointConfiguration.getNegativeAckRedeliveryDelayMicros(),
 TimeUnit.MICROSECONDS)
                 .readCompacted(endpointConfiguration.isReadCompacted());
diff --git 
a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/SubscriptionMode.java
 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/SubscriptionMode.java
new file mode 100644
index 000000000000..8e454fa8b4bc
--- /dev/null
+++ 
b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/utils/consumers/SubscriptionMode.java
@@ -0,0 +1,32 @@
+/*
+ * 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.pulsar.utils.consumers;
+
+public enum SubscriptionMode {
+    DURABLE(org.apache.pulsar.client.api.SubscriptionMode.Durable),
+    NON_DURABLE(org.apache.pulsar.client.api.SubscriptionMode.NonDurable);
+
+    private final org.apache.pulsar.client.api.SubscriptionMode 
pulsarSubscriptionMode;
+
+    SubscriptionMode(org.apache.pulsar.client.api.SubscriptionMode 
pulsarSubscriptionMode) {
+        this.pulsarSubscriptionMode = pulsarSubscriptionMode;
+    }
+
+    public org.apache.pulsar.client.api.SubscriptionMode 
toPulsarSubscriptionMode() {
+        return pulsarSubscriptionMode;
+    }
+}
diff --git 
a/components/camel-pulsar/src/test/java/org/apache/camel/component/pulsar/PulsarComponentTest.java
 
b/components/camel-pulsar/src/test/java/org/apache/camel/component/pulsar/PulsarComponentTest.java
index 419737fab2ef..4291bb99b897 100644
--- 
a/components/camel-pulsar/src/test/java/org/apache/camel/component/pulsar/PulsarComponentTest.java
+++ 
b/components/camel-pulsar/src/test/java/org/apache/camel/component/pulsar/PulsarComponentTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.pulsar;
 
 import org.apache.camel.component.pulsar.utils.AutoConfiguration;
+import org.apache.camel.component.pulsar.utils.consumers.SubscriptionMode;
 import org.apache.camel.component.pulsar.utils.consumers.SubscriptionType;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
@@ -66,6 +67,7 @@ public class PulsarComponentTest extends CamelTestSupport {
         assertNull(endpoint.getPulsarConfiguration().getProducerName());
         assertEquals("subs", 
endpoint.getPulsarConfiguration().getSubscriptionName());
         assertEquals(SubscriptionType.EXCLUSIVE, 
endpoint.getPulsarConfiguration().getSubscriptionType());
+        assertEquals(SubscriptionMode.DURABLE, 
endpoint.getPulsarConfiguration().getSubscriptionMode());
         
assertFalse(endpoint.getPulsarConfiguration().isAllowManualAcknowledgement());
         assertFalse(endpoint.getPulsarConfiguration().isReadCompacted());
         assertTrue(endpoint.getPulsarConfiguration().isMessageListener());
@@ -83,6 +85,19 @@ public class PulsarComponentTest extends CamelTestSupport {
         
verify(autoConfiguration).ensureNameSpaceAndTenant(ArgumentMatchers.anyString());
     }
 
+    @Test
+    public void testPulsarEndpointSubscriptionModeNonDurable() throws 
Exception {
+        PulsarComponent component = context.getComponent("pulsar", 
PulsarComponent.class);
+        component.setAutoConfiguration(autoConfiguration);
+
+        PulsarEndpoint endpoint = (PulsarEndpoint) component
+                .createEndpoint(
+                        
"pulsar://persistent/test/foobar/BatchCreated?subscriptionMode=NON_DURABLE");
+
+        assertNotNull(endpoint);
+        assertEquals(SubscriptionMode.NON_DURABLE, 
endpoint.getPulsarConfiguration().getSubscriptionMode());
+    }
+
     @Test
     public void testPulsarEndpointAllowManualAcknowledgementDefaultTrue() 
throws Exception {
         PulsarComponent component = context.getComponent("pulsar", 
PulsarComponent.class);

Reply via email to