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

Reply via email to