[
https://issues.apache.org/jira/browse/NIFI-3983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16065842#comment-16065842
]
ASF GitHub Bot commented on NIFI-3983:
--------------------------------------
Github user ijokarumawak commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1863#discussion_r124441093
--- Diff:
nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/ConsumeJMS.java
---
@@ -86,6 +86,31 @@
.defaultValue(CLIENT_ACK.getValue())
.build();
+ static final PropertyDescriptor DURABLE_SUBSCRIBER = new
PropertyDescriptor.Builder()
+
.name("Durable subscription")
+
.description("If destination is Topic if present then make it the consumer
durable. " +
+
"@see
https://docs.oracle.com/javaee/7/api/javax/jms/Session.html#createDurableConsumer-javax.jms.Topic-java.lang.String-")
+
.required(false)
+
.expressionLanguageSupported(true)
+
.defaultValue("true")
--- End diff --
I'm testing these new properties with Active MQ. With durable subscription
enabled, I got following error:
```
Caused by: javax.jms.JMSException: You cannot create a durable subscriber
without specifying a unique clientID on a Connection
at
org.apache.activemq.ActiveMQConnection.checkClientIDWasManuallySpecified(ActiveMQConnection.java:1288)
at
org.apache.activemq.ActiveMQSession.createDurableSubscriber(ActiveMQSession.java:1467)
at
org.springframework.jms.connection.CachingConnectionFactory$CachedSessionInvocationHandler.getCachedConsumer(CachingConnectionFactory.java:442)
at
org.springframework.jms.connection.CachingConnectionFactory$CachedSessionInvocationHandler.invoke(CachingConnectionFactory.java:356)
at com.sun.proxy.$Proxy84.createDurableConsumer(Unknown Source)
at
org.apache.nifi.jms.processors.JMSConsumer$1.doInJms(JMSConsumer.java:87)
at
org.apache.nifi.jms.processors.JMSConsumer$1.doInJms(JMSConsumer.java:65)
at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494)
... 16 common frames omitted
```
I think we need to set unique client id at each processor. Probably at
AbstractJMSProcessor.java
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-processors/src/main/java/org/apache/nifi/jms/processors/AbstractJMSProcessor.java#L198
```
// Need to add something like this:
this.cachingConnectionFactory.setClientId("some-unique-id");
```
I'm wondering if client id can be the same value with subscription name...
I will research on this a bit more, but do you have any idea?
> Support ability to make JMS 2.0 durable subscriptions on Topic
> --------------------------------------------------------------
>
> Key: NIFI-3983
> URL: https://issues.apache.org/jira/browse/NIFI-3983
> Project: Apache NiFi
> Issue Type: Improvement
> Reporter: Michael Andre Pearce
>
> Currently the jms consumer, only supports standard queue consumption and
> topic subscription. For topics, in JMS 2.0 you can make shared durable
> subscribers which gives a subscription semantic similar to queue per
> subscription name, meaning message is delivered once per subscription. This
> is very useful in setups using JMS 2.0.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)