On Mon, Mar 28, 2022 at 11:28 AM Andrea Cosentino <anco...@gmail.com> wrote:
>
> Also, If you use a queue and not a topic, the subscriptionName is not
> mandatory.
>
> I think we should revert this.
>

+1

Also it would be good to have a JIRA ticket about such a change the
next time, so we can track this - end users can see the JIRA changes.
There may be that the subscription name must be checked for != null in
the code to report a better failure etc.

> Il giorno lun 28 mar 2022 alle ore 08:59 Claus Ibsen <claus.ib...@gmail.com>
> ha scritto:
>
> > Hi Babak
> >
> > Did you consider that the producer may not require this parameter? And
> > if so then it cannot be marked as required.
> > You can only add this in its documentation, and have some code that
> > checks when creating the consumer that the option is present.
> >
> > It's a limitation with @UriParam that we cannot mark things as
> > required only for consumer vs producer.
> >
> > On Mon, Mar 28, 2022 at 1:07 AM <bvah...@apache.org> wrote:
> > >
> > > This is an automated email from the ASF dual-hosted git repository.
> > >
> > > bvahdat pushed a commit to branch azure-servicebus-subscriptionName
> > > in repository https://gitbox.apache.org/repos/asf/camel.git
> > >
> > > commit 334f1c3e8d3aeef287548f168379e7c62da975b6
> > > Author: Babak Vahdat <bvah...@apache.org>
> > > AuthorDate: Mon Mar 28 01:04:57 2022 +0200
> > >
> > >     azure-servicebus subscriptionName is required by it's consumer
> > > ---
> > >  .../org/apache/camel/catalog/components/azure-servicebus.json         |
> > 4 ++--
> > >  .../org/apache/camel/component/azure/servicebus/azure-servicebus.json |
> > 4 ++--
> > >  .../camel/component/azure/servicebus/ServiceBusConfiguration.java     |
> > 1 +
> > >  .../camel/builder/endpoint/dsl/ServiceBusEndpointBuilderFactory.java  |
> > 1 +
> > >  4 files changed, 6 insertions(+), 4 deletions(-)
> > >
> > > diff --git
> > a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-servicebus.json
> > b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-servicebus.json
> > > index bb91029..a20b0e5 100644
> > > ---
> > a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-servicebus.json
> > > +++
> > b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-servicebus.json
> > > @@ -37,7 +37,7 @@
> > >      "receiverAsyncClient": { "kind": "property", "displayName":
> > "Receiver Async Client", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient",
> > "deprecated": false, "deprecationNote": "", "autowired": true, "secret":
> > false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the receiverAsy
> > [...]
> > >      "serviceBusReceiveMode": { "kind": "property", "displayName":
> > "Service Bus Receive Mode", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.models.ServiceBusReceiveMode", "enum": [
> > "PEEK_LOCK", "RECEIVE_AND_DELETE" ], "deprecated": false, "autowired":
> > false, "secret": false, "defaultValue": "PEEK_LOCK", "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationFie [...]
> > >      "subQueue": { "kind": "property", "displayName": "Sub Queue",
> > "group": "consumer", "label": "consumer", "required": false, "type":
> > "object", "javaType": "com.azure.messaging.servicebus.models.SubQueue",
> > "enum": [ "NONE", "DEAD_LETTER_QUEUE", "TRANSFER_DEAD_LETTER_QUEUE" ],
> > "deprecated": false, "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the [...]
> > > -    "subscriptionName": { "kind": "property", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > false, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "autowired": false, "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQueueName and serviceBusT
> > [...]
> > > +    "subscriptionName": { "kind": "property", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > true, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "deprecationNote": "", "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQue [...]
> > >      "lazyStartProducer": { "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 fail during star [...]
> > >      "producerOperation": { "kind": "property", "displayName": "Producer
> > Operation", "group": "producer", "label": "producer", "required": false,
> > "type": "object", "javaType":
> > "org.apache.camel.component.azure.servicebus.ServiceBusProducerOperationDefinition",
> > "enum": [ "sendMessages", "scheduleMessages" ], "deprecated": false,
> > "autowired": false, "secret": false, "defaultValue": "sendMessages",
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration", "
> > [...]
> > >      "scheduledEnqueueTime": { "kind": "property", "displayName":
> > "Scheduled Enqueue Time", "group": "producer", "label": "producer",
> > "required": false, "type": "object", "javaType":
> > "java.time.OffsetDateTime", "deprecated": false, "autowired": false,
> > "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets OffsetDateTime
> > at which the message should appear in the Service Bus qu [...]
> > > @@ -91,7 +91,7 @@
> > >      "receiverAsyncClient": { "kind": "parameter", "displayName":
> > "Receiver Async Client", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient",
> > "deprecated": false, "deprecationNote": "", "autowired": true, "secret":
> > false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the receiverAs
> > [...]
> > >      "serviceBusReceiveMode": { "kind": "parameter", "displayName":
> > "Service Bus Receive Mode", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.models.ServiceBusReceiveMode", "enum": [
> > "PEEK_LOCK", "RECEIVE_AND_DELETE" ], "deprecated": false, "autowired":
> > false, "secret": false, "defaultValue": "PEEK_LOCK", "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationFi [...]
> > >      "subQueue": { "kind": "parameter", "displayName": "Sub Queue",
> > "group": "consumer", "label": "consumer", "required": false, "type":
> > "object", "javaType": "com.azure.messaging.servicebus.models.SubQueue",
> > "enum": [ "NONE", "DEAD_LETTER_QUEUE", "TRANSFER_DEAD_LETTER_QUEUE" ],
> > "deprecated": false, "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets th [...]
> > > -    "subscriptionName": { "kind": "parameter", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > false, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "autowired": false, "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQueueName and serviceBus
> > [...]
> > > +    "subscriptionName": { "kind": "parameter", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > true, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "deprecationNote": "", "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQu [...]
> > >      "exceptionHandler": { "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 default
> > the con [...]
> > >      "exchangePattern": { "kind": "parameter", "displayName": "Exchange
> > Pattern", "group": "consumer (advanced)", "label": "consumer,advanced",
> > "required": false, "type": "object", "javaType":
> > "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut",
> > "InOptionalOut" ], "deprecated": false, "autowired": false, "secret":
> > false, "description": "Sets the exchange pattern when the consumer creates
> > an exchange." },
> > >      "lazyStartProducer": { "kind": "parameter", "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 fail during sta [...]
> > > diff --git
> > a/components/camel-azure/camel-azure-servicebus/src/generated/resources/org/apache/camel/component/azure/servicebus/azure-servicebus.json
> > b/components/camel-azure/camel-azure-servicebus/src/generated/resources/org/apache/camel/component/azure/servicebus/azure-servicebus.json
> > > index bb91029..a20b0e5 100644
> > > ---
> > a/components/camel-azure/camel-azure-servicebus/src/generated/resources/org/apache/camel/component/azure/servicebus/azure-servicebus.json
> > > +++
> > b/components/camel-azure/camel-azure-servicebus/src/generated/resources/org/apache/camel/component/azure/servicebus/azure-servicebus.json
> > > @@ -37,7 +37,7 @@
> > >      "receiverAsyncClient": { "kind": "property", "displayName":
> > "Receiver Async Client", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient",
> > "deprecated": false, "deprecationNote": "", "autowired": true, "secret":
> > false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the receiverAsy
> > [...]
> > >      "serviceBusReceiveMode": { "kind": "property", "displayName":
> > "Service Bus Receive Mode", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.models.ServiceBusReceiveMode", "enum": [
> > "PEEK_LOCK", "RECEIVE_AND_DELETE" ], "deprecated": false, "autowired":
> > false, "secret": false, "defaultValue": "PEEK_LOCK", "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationFie [...]
> > >      "subQueue": { "kind": "property", "displayName": "Sub Queue",
> > "group": "consumer", "label": "consumer", "required": false, "type":
> > "object", "javaType": "com.azure.messaging.servicebus.models.SubQueue",
> > "enum": [ "NONE", "DEAD_LETTER_QUEUE", "TRANSFER_DEAD_LETTER_QUEUE" ],
> > "deprecated": false, "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the [...]
> > > -    "subscriptionName": { "kind": "property", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > false, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "autowired": false, "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQueueName and serviceBusT
> > [...]
> > > +    "subscriptionName": { "kind": "property", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > true, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "deprecationNote": "", "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQue [...]
> > >      "lazyStartProducer": { "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 fail during star [...]
> > >      "producerOperation": { "kind": "property", "displayName": "Producer
> > Operation", "group": "producer", "label": "producer", "required": false,
> > "type": "object", "javaType":
> > "org.apache.camel.component.azure.servicebus.ServiceBusProducerOperationDefinition",
> > "enum": [ "sendMessages", "scheduleMessages" ], "deprecated": false,
> > "autowired": false, "secret": false, "defaultValue": "sendMessages",
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration", "
> > [...]
> > >      "scheduledEnqueueTime": { "kind": "property", "displayName":
> > "Scheduled Enqueue Time", "group": "producer", "label": "producer",
> > "required": false, "type": "object", "javaType":
> > "java.time.OffsetDateTime", "deprecated": false, "autowired": false,
> > "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets OffsetDateTime
> > at which the message should appear in the Service Bus qu [...]
> > > @@ -91,7 +91,7 @@
> > >      "receiverAsyncClient": { "kind": "parameter", "displayName":
> > "Receiver Async Client", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient",
> > "deprecated": false, "deprecationNote": "", "autowired": true, "secret":
> > false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the receiverAs
> > [...]
> > >      "serviceBusReceiveMode": { "kind": "parameter", "displayName":
> > "Service Bus Receive Mode", "group": "consumer", "label": "consumer",
> > "required": false, "type": "object", "javaType":
> > "com.azure.messaging.servicebus.models.ServiceBusReceiveMode", "enum": [
> > "PEEK_LOCK", "RECEIVE_AND_DELETE" ], "deprecated": false, "autowired":
> > false, "secret": false, "defaultValue": "PEEK_LOCK", "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationFi [...]
> > >      "subQueue": { "kind": "parameter", "displayName": "Sub Queue",
> > "group": "consumer", "label": "consumer", "required": false, "type":
> > "object", "javaType": "com.azure.messaging.servicebus.models.SubQueue",
> > "enum": [ "NONE", "DEAD_LETTER_QUEUE", "TRANSFER_DEAD_LETTER_QUEUE" ],
> > "deprecated": false, "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets th [...]
> > > -    "subscriptionName": { "kind": "parameter", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > false, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "autowired": false, "secret": false, "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQueueName and serviceBus
> > [...]
> > > +    "subscriptionName": { "kind": "parameter", "displayName":
> > "Subscription Name", "group": "consumer", "label": "consumer", "required":
> > true, "type": "string", "javaType": "java.lang.String", "deprecated":
> > false, "deprecationNote": "", "autowired": false, "secret": false,
> > "configurationClass":
> > "org.apache.camel.component.azure.servicebus.ServiceBusConfiguration",
> > "configurationField": "configuration", "description": "Sets the name of the
> > subscription in the topic to listen to. topicOrQu [...]
> > >      "exceptionHandler": { "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 default
> > the con [...]
> > >      "exchangePattern": { "kind": "parameter", "displayName": "Exchange
> > Pattern", "group": "consumer (advanced)", "label": "consumer,advanced",
> > "required": false, "type": "object", "javaType":
> > "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut",
> > "InOptionalOut" ], "deprecated": false, "autowired": false, "secret":
> > false, "description": "Sets the exchange pattern when the consumer creates
> > an exchange." },
> > >      "lazyStartProducer": { "kind": "parameter", "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 fail during sta [...]
> > > diff --git
> > a/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/ServiceBusConfiguration.java
> > b/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/ServiceBusConfiguration.java
> > > index 94e488c..5d75290 100644
> > > ---
> > a/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/ServiceBusConfiguration.java
> > > +++
> > b/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/ServiceBusConfiguration.java
> > > @@ -64,6 +64,7 @@ public class ServiceBusConfiguration implements
> > Cloneable {
> > >      @Metadata(autowired = true)
> > >      private ServiceBusReceiverAsyncClient receiverAsyncClient;
> > >      @UriParam(label = "consumer")
> > > +    @Metadata(required = true)
> > >      private String subscriptionName;
> > >      @UriParam(label = "consumer")
> > >      private boolean disableAutoComplete;
> > > diff --git
> > a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceBusEndpointBuilderFactory.java
> > b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceBusEndpointBuilderFactory.java
> > > index 6fd7564..7c5794c 100644
> > > ---
> > a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceBusEndpointBuilderFactory.java
> > > +++
> > b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceBusEndpointBuilderFactory.java
> > > @@ -572,6 +572,7 @@ public interface ServiceBusEndpointBuilderFactory {
> > >           *
> > >           * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt;
> > type.
> > >           *
> > > +         * Required: true
> > >           * Group: consumer
> > >           *
> > >           * @param subscriptionName the value to set
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
> >



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to