We use default ConsumeAMQP and Nifi version 1.18.0.
RabbitMQ connection is successful, when data comes from RabbitMQ, ConsumeAMQP processor is throwing NullPointerException.
Once exception occurs, there is increase in consumer at rabbitmq side. Probably it's because, it can not kill the consumer that throws the exception.
How can we consume data without any exceptions? I have some suspicion about the exception stack trace ".convertMapToString" but how can fix it?
RabbitMQ Message:
Exchange EXCHANGE.EXRouting Key ROUTING.TESTRedelivered ●Properties app_id: UI.XXX|TEST|0|1 user_id: XYZUSER timestamp: 123456 priority: 0 delivery_mode: 2headers: ClassName: Test.UI.X.Y FileName: undefined LineNumber: 0 MethodName: MethodName singularityheader: notxdetect=True content_encoding: utf8 content_type: text/plainPayload 278 bytes Encoding: stringTestLog| Testlogcontent| Testlog value....
Exception Log:
2022-11-30 13:22:56,818 ERROR [Timer-Driven Process Thread-9] o.a.nifi.amqp.processors.ConsumeAMQP ConsumeAMQP[id=b0520c61-32aa-386d-20ac-9a2a34c14a30] Processor failurejava.lang.NullPointerException: null at org.apache.nifi.amqp.processors.ConsumeAMQP.convertMapToString(ConsumeAMQP.java:237) at org.apache.nifi.amqp.processors.ConsumeAMQP.buildHeaders(ConsumeAMQP.java:220) at org.apache.nifi.amqp.processors.ConsumeAMQP.buildAttributes(ConsumeAMQP.java:192) at org.apache.nifi.amqp.processors.ConsumeAMQP.processResource(ConsumeAMQP.java:172) at org.apache.nifi.amqp.processors.ConsumeAMQP.processResource(ConsumeAMQP.java:47) at org.apache.nifi.amqp.processors.AbstractAMQPProcessor.onTrigger(AbstractAMQPProcessor.java:223) at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1354) at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:246) at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:102) at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110) 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:750)2022-11-30 13:22:57,001 ERROR [Timer-Driven Process Thread-9] o.a.n.c.r.StandardProcessSession Failed to asynchronously commit session StandardProcessSession[id=323331374] for ConsumeAMQP[id=b0520c61-32aa-386d-20ac-9a2a34c14a30]org.apache.nifi.processor.exception.FlowFileHandlingException: StandardFlowFileRecord[uuid=db0849b7-f695-4f7c-b5a7-6bffb6c33d8d,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1669802459297-401, container=default, section=401], offset=33821, length=147],offset=0,name=db0849b7-f695-4f7c-b5a7-6bffb6c33d8d,size=147] transfer relationship not specified. This FlowFile was created in this session and was not transferred to any Relationship via ProcessSession.transfer() at org.apache.nifi.controller.repository.StandardProcessSession.validateCommitState(StandardProcessSession.java:259) at org.apache.nifi.controller.repository.StandardProcessSession.checkpoint(StandardProcessSession.java:274) at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:556) at org.apache.nifi.controller.repository.StandardProcessSession.commitAsync(StandardProcessSession.java:510) at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:28) at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1354) at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:246) at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:102) at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110) 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:750)