-
Type:
Bug
-
Status: Closed
-
Priority:
Critical
-
Resolution: Done
-
Affects Version/s: jboss-fuse-6.3
-
Fix Version/s: jboss-fuse-6.3
-
Component/s: Camel
-
Labels:
-
Steps to Reproduce:
-
Sprint:Sprint 6 - towards CR1
It seems there is some regression in Fuse 6.3 when sending JSON or Custom Object to activemq queue/topic using Camel.
Here is simplified reproducer route for this problem:
<bean id="transform" class="org.jboss.fuse.qa.xxx.usecase.translate.TransformCustomer"/>
|
|
|
<camelContext id="xlate-customer" xmlns="http://camel.apache.org/schema/blueprint" autoStartup="true">
|
<propertyPlaceholder location="blueprint:placeholder1,blueprint:placeholder2,blueprint:placeholder3,blueprint:placeholder4" id="properties1"/>
|
<dataFormats>
|
<json id="customer" library="Jackson" unmarshalTypeName="org.jboss.fuse.qa.xxx.usecase.customer.Customer"/>
|
<json id="insuranceCustomer" library="Jackson" unmarshalTypeName="org.jboss.fuse.qa.xxx.usecase.insurance.InsuranceCustomer"/>
|
|
|
</dataFormats>
|
<route id="xlate2">
|
<from uri="activemq-out:queue:testIn?username=admin&password=admin&destination.consumer.exclusive=true"/>
|
<unmarshal ref="customer"/>
|
<bean ref="transform"/>
|
<marshal ref="insuranceCustomer"/>
|
<to uri="activemq-out:queue:testOut?username=admin&password=admin&disableReplyTo=true"/>
|
</route>
|
|
|
</camelContext>
|
Using this route and sending correct JSON string to first queue generates this Exception in Fuse 6.3.0 133:
2016-07-19 15:16:03,438 | ERROR | Consumer[testIn] | DefaultErrorHandler | 231 - org.apache.camel.camel-core - 2.17.0.redhat-630133 | Failed delivery for (MessageId: ID-rjakubco-ThinkPad-T460s-38402-1468934125979-0-2 on ExchangeId: ID-rjakubco-ThinkPad-T460s-38402-1468934125979-0-1). Exhausted after delivery attempt: 1 caught: java.lang.NullPointerException
|
|
|
Message History
|
---------------------------------------------------------------------------------------------------------------------------------------
|
RouteId ProcessorId Processor Elapsed (ms)
|
[xlate2 ] [xlate2 ] [activemq-out://queue:testIn?destination.consumer.exclusive=true&password=xxxxx] [ 81]
|
[xlate2 ] [unmarshal1 ] [unmarshal[ref:customer] ] [ 56]
|
[xlate2 ] [bean1 ] [bean[ref:transform] ] [ 1]
|
[xlate2 ] [marshal1 ] [marshal[ref:insuranceCustomer] ] [ 14]
|
[xlate2 ] [to1 ] [activemq-out:queue:testOut?username=admin&password=xxxxxx&disableReplyTo=true ] [ 6]
|
|
|
Stacktrace
|
---------------------------------------------------------------------------------------------------------------------------------------
|
java.lang.NullPointerException
|
at org.apache.activemq.camel.component.OriginalDestinationPropagateStrategy.onMessageCreated(OriginalDestinationPropagateStrategy.java:45)[245:org.apache.activemq.activemq-camel:5.11.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsBinding.makeJmsMessage(JmsBinding.java:309)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsProducer$2.createMessage(JmsProducer.java:301)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSendToDestination(JmsConfiguration.java:498)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration.java:441)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$1.doInJms(JmsConfiguration.java:455)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:452)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:414)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:368)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:154)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:91)[231:org.apache.camel.camel-core:2.17.0.redhat-630133]
|
at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:112)[243:org.apache.camel.camel-jms:2.17.0.redhat-630133]
|
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:555)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:515)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:485)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1103)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1095)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:992)[242:org.apache.servicemix.bundles.spring-jms:3.2.16.RELEASE_1]
|
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_91]
|
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_91]
|
at java.lang.Thread.run(Thread.java:745)[:1.8.0_91]
|
The same problem occurs when the marshalling is skipped and a custom Object is sent to the testOut queue. Using the same Camel route in Fuse 6.2.1 117 works without a problem(same for Object).
Also I would like to note that if you add <convertBodyTo type="java.lang.String"/> after marshall element then the message is delivered without a problem.