Dear Camel guys and girls,
I have a question regarding the property "subscriptionName" which can be
specified for a JMS-Consumer.
First, here is my project setup:
* Camel 2.24.1
* Spring-Boot: 2.1.0.RELEASE
I create a simple standalone JAR which just should consume from defined
JMS-Queues and/or JMS-Topics.
Therefore I wrote a simple Route and configured my JMS-Endpoint like this:
jms:topic:mytopicstring?connectionFactory=#connectionFactory&defaultTaskExecutorType=SimpleAsync&bridgeErrorHandler=true&subscriptionShared=true&subscriptionName=jmsc_lokal
As you can see I use a shared subscription in combination with a
subscriptionName as I want to be able to identify my subscription as long as it
lasts.
The problem is now that this subscriptionName is never used. Instead my
subscription on the topic uses the default subscription name which is the class
name: org.apache.camel.component.jms.EndpointMessageListener.
In the documentation on GitHub for Camel Version 2.24.1 it is written that the
subscriptionName can be used for shared subscription too.:
subscriptionName (consumer)
Set the name of a subscription to create. To be applied in case of a topic
(pub-sub domain) with a shared or durable subscription. The subscription name
needs to be unique within this client’s JMS client id. Default is the class
name of the specified message listener. Note: Only 1 concurrent consumer (which
is the default of this message listener container) is allowed for each
subscription, except for a shared subscription (which requires JMS 2.0).
If I debug into the method
org.apache.camel.component.jms.JmsEndpoint#configureListenerContainer
I can see that the subscriptionName is in fact only used when the subscription
is durable (which I don't want to have):
// now configure the JMS 2.0 API
if (configuration.getDurableSubscriptionName() != null) {
listenerContainer.setDurableSubscriptionName(configuration.getDurableSubscriptionName());
} else if (configuration.isSubscriptionDurable()) {
listenerContainer.setSubscriptionDurable(true);
if (configuration.getSubscriptionName() != null) {
listenerContainer.setSubscriptionName(configuration.getSubscriptionName());
}
}
listenerContainer.setSubscriptionShared(configuration.isSubscriptionShared());
So I am wondering if I just misunderstood the documentation or if it is indeed
a bug that the subscriptionName can only be used in combination with a durable
subscription?
Could you please tell me what you think?
If it is a bug I can create a JIRA-Issue and provide a hotfix if you want.
If I just misunderstood something it would be great if you could help me out
with this one.
Best regards and thanks a lot in advance,
Daniel Novak
**********************************************************************
This message and any attachment are confidential and may be privileged or
otherwise protected from disclosure. If you are not the intended recipient,
please call or e-mail the sender and delete the message and any attachment from
your system. If you are not the intended recipient, you must not copy this
message or attachment or disclose the contents to any other person. E-mail
transmission cannot be guaranteed to be secure or error-free as information
could be intercepted, corrupted, lost, destroyed, arrive later or incomplete,
or contain viruses. DZ PRIVATBANK therefore does not accept liability for any
errors or omissions in the contents of this message which arises as a result of
e-mail transmission. If verification is required please request a hard-copy
version. This message is provided for informational purposes only and should
not be construed as a solicitation or offer to buy or sell any securities or
related financial instruments. DZ PRIVATBANK does not warrant that incoming
e-mails will be processed within a certain period of time. For security
reasons, DZ PRIVATBANK does not accept any instructions that must be in writing
(financial transactions, changes of address, etc.) sent by e-mail. If a message
is urgent, please contact us by telephone.
**********************************************************************