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);
