Hi all,
We currently have a problem where messages that can't be read properly get
dropped instead of being put into a dlq. I have an errorHandler that works
properly when the exception is thrown from within the route (from a
processor for example), but refuses to kick in when it's a lower level error
(i.e.: Before even getting into the route).
- I'm using camel-2.0-M1
- The route is setup through the Java dsl
The route looks something like:
errorHandler(
deadLetterChannel(configuration.getDLQCompomentUrl()).
maximumRedeliveries(configuration.getMaxRedeliveries()).
log(RTSListenerRouteBuilder.class).
retriesExhaustedLogLevel(LoggingLevel.ERROR).
retryAttemptedLogLevel(LoggingLevel.TRACE)
);
from(configuration.getSourceComponentUrl()).
choice().
when(configuration.getMessageFilter()).
process(configuration.getMessageEnricher()).
to(configuration.getMessageEndpoint()).
otherwise().
to(configuration.getInvalidMessageComponentUrl());
Pretty straightforward ... I've tried adding a few variants, most notable
adding a global exception handler:
onException(java.io.UTFDataFormatException.class).handled(false).to("jms.mydlq");
To no avail.
Here's the stack trace I get:
[WARN] [org.springframework.jms.listener.DefaultMessageListenerContainer]
Execution of JMS message listener failed
org.apache.camel.RuntimeCamelException: Failed to extract body due to:
javax.jms.JMSException: java.io.UTFDataFormatException. Message:
ActiveMQTextMessage {...l}
at
org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:104)
at
org.apache.camel.component.jms.JmsMessage.createBody(JmsMessage.java:150)
at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:45)
at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:52)
at
org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:74)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:65)
at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:72)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:881)
at java.lang.Thread.run(Thread.java:613)
Caused by: javax.jms.JMSException: java.io.UTFDataFormatException
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
at
org.apache.activemq.command.ActiveMQTextMessage.getText(ActiveMQTextMessage.java:91)
at
org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:93)
... 16 more
Caused by: java.io.UTFDataFormatException
at
org.apache.activemq.util.MarshallingSupport.readUTF8(MarshallingSupport.java:372)
at
org.apache.activemq.command.ActiveMQTextMessage.getText(ActiveMQTextMessage.java:86)
... 17 more
Thanks for any input.
--
View this message in context:
http://www.nabble.com/Dropped-jms-messages-on-java.io.UTFDataFormatException-tp24761350p24761350.html
Sent from the Camel - Users mailing list archive at Nabble.com.