[
https://issues.apache.org/jira/browse/NIFI-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16529450#comment-16529450
]
Kelsey Rider commented on NIFI-5360:
------------------------------------
My response:
I see what you’re saying, but conceptually, it doesn’t seem like a good idea to
me.
>From what I can gather, the purpose of Controller Services is to have a shared
>component that deals with external special cases (like DB connections).
>From my point of view (which is admittedly that of a newb) it seems like:
# The JMSConnectionFactoryProvider should handle the special case of dealing
with a specific external system. It should expose a method that allows the
Processor to request a FlowFile fetched from a queue. This would be analagous
to a DB – if I want to fetch rows from, say, a PostgreSQL DB, the Controller
Service handles all the Postgres-specific stuff (including the Driver library),
and the Processor just gets a FlowFile. (Edit – looked at the code and realized
it doesn’t work like this. But then why don’t we have classpath issues when
fetching from a DB?)
# Adding the MQ libraries to the Processor would be redundant (DRY), because
they’re already specified on the JMSConnectionFactoryProvider.
> Simple JMS pub-sub not working
> ------------------------------
>
> Key: NIFI-5360
> URL: https://issues.apache.org/jira/browse/NIFI-5360
> Project: Apache NiFi
> Issue Type: Bug
> Components: Extensions
> Affects Versions: 1.6.0
> Reporter: Kelsey Rider
> Priority: Major
> Labels: jms
>
> A simple JMS pub-sub flow using RabbitMQ does not work.
> # Install/setup RabbitMQ
> # Create a JMSConnectionFactoryProvider, and configure it to work with
> RabbitMQ (including the required JARs *amqp-client* and *rabbitmq-jms*)
> # Create a flow with *GenerateFlowFile -> PublishJMS* to publish something
> on a queue
> # Create a *ConsumeJMS* processor that attempts to recover what was just
> published
> Result: when the message is consumed, the ClassLoader does not have the JMS
> libraries.
> {{2018-06-28 15:47:27,161 ERROR [Timer-Driven Process Thread-9]
> o.apache.nifi.jms.processors.ConsumeJMS
> ConsumeJMS[id=01641047-1441-10a4-ce22-23d392689dd9]
> ConsumeJMS[id=01641047-1441-10a4-ce22-23d392689dd9] failed to process session
> due to org.springframework.jms.UncategorizedJmsException: Uncategorized
> exception occured during JMS processing; nested exception is
> com.rabbitmq.jms.util.RMQJMSException:
> com.rabbitmq.jms.client.message.RMQTextMessage; Processor Administratively
> Yielded for 1 sec: org.springframework.jms.UncategorizedJmsException:
> Uncategorized exception occured during JMS processing; nested exception is
> com.rabbitmq.jms.util.RMQJMSException:
> com.rabbitmq.jms.client.message.RMQTextMessage}}{{org.springframework.jms.UncategorizedJmsException:
> Uncategorized exception occured during JMS processing; nested exception is
> com.rabbitmq.jms.util.RMQJMSException:
> com.rabbitmq.jms.client.message.RMQTextMessage}}{{ at
> org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)}}{{
> at
> org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)}}{{
> at
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:497)}}{{
> at
> org.apache.nifi.jms.processors.JMSConsumer.consume(JMSConsumer.java:85)}}{{
> at
> org.apache.nifi.jms.processors.ConsumeJMS.rendezvousWithJms(ConsumeJMS.java:181)}}{{
> at
> org.apache.nifi.jms.processors.ConsumeJMS.rendezvousWithJms(ConsumeJMS.java:59)}}{{
> at
> org.apache.nifi.jms.processors.AbstractJMSProcessor.onTrigger(AbstractJMSProcessor.java:157)}}{{
> at
> org.apache.nifi.jms.processors.ConsumeJMS.onTrigger(ConsumeJMS.java:59)}}{{
> at
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)}}{{
> at
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1147)}}{{
> at
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:175)}}{{
> at
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)}}{{
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)}}{{
> at
> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)}}{{
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)}}{{
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)}}{{
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}}{{
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}}{{
> at java.lang.Thread.run(Thread.java:748)}}{{Caused by:
> com.rabbitmq.jms.util.RMQJMSException:
> com.rabbitmq.jms.client.message.RMQTextMessage}}{{ at
> com.rabbitmq.jms.client.RMQMessage.instantiateRmqMessage(RMQMessage.java:1070)}}{{
> at
> com.rabbitmq.jms.client.RMQMessage.fromMessage(RMQMessage.java:1030)}}{{
> at
> com.rabbitmq.jms.client.RMQMessage.convertJmsMessage(RMQMessage.java:871)}}{{
> at
> com.rabbitmq.jms.client.RMQMessage.convertMessage(RMQMessage.java:865)}}{{
> at
> com.rabbitmq.jms.client.RMQMessageConsumer.receive(RMQMessageConsumer.java:331)}}{{
> at
> com.rabbitmq.jms.client.RMQMessageConsumer.receive(RMQMessageConsumer.java:246)}}{{
> at
> org.apache.nifi.jms.processors.JMSConsumer$1.doInJms(JMSConsumer.java:95)}}{{
> at
> org.apache.nifi.jms.processors.JMSConsumer$1.doInJms(JMSConsumer.java:85)}}{{
> at
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494)}}{{
> ... 16 common frames omitted}}{{Caused by:
> java.lang.ClassNotFoundException:
> com.rabbitmq.jms.client.message.RMQTextMessage}}{{ at
> java.net.URLClassLoader.findClass(URLClassLoader.java:381)}}{{
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)}}{{ at
> java.lang.ClassLoader.loadClass(ClassLoader.java:357)}}{{ at
> java.lang.Class.forName0(Native Method)}}{{ at
> java.lang.Class.forName(Class.java:348)}}{{ at
> com.rabbitmq.jms.client.RMQMessage.instantiateRmqMessage(RMQMessage.java:1064)}}{{
> ... 24 common frames omitted}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)