I'm having trouble getting the dead letter channel to actually deliver to a
dead letter queue. It retries correctly, but after all the retries all I
get that refers to the final queue is a log message saying "Handled by the
failure processor:
RecipientList[activemq:queue:bulk_ErrorQ?transferExchange=true&maxMessagesPerTask=-1]".
The activemq EnqueueCount for the errorQ doesn't even change.
Messages to and from other queues get handled fine. If I manually put a
message on the errorQ it gets picked up by my custom error handler
Processor.
I'm using Camel 1.6.2-SNAPSHOT with this configuration:
<bean id="myDeadLetterErrorHandler"
class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="defaultDeadLetterEndpointUri"
value="activemq:queue:bulk_ErrorQ?transferExchange=true&maxMessagesPerTask=-1"/>
<property name="redeliveryPolicy" ref="myRedeliveryPolicyConfig"/>
</bean>
<bean id="myRedeliveryPolicyConfig"
class="org.apache.camel.processor.RedeliveryPolicy">
<property name="maximumRedeliveries" value="1"/>
<property name="maximumRedeliveryDelay" value="250"/>
<property name="retryAttemptedLogLevel" value="FATAL"/>
<property name="retriesExhaustedLogLevel" value="FATAL"/>
</bean>
<camelContext id="camel"
xmlns="http://activemq.apache.org/camel/schema/spring"
errorHandlerRef="myDeadLetterErrorHandler">
<package>org.apache.camel.example.spring</package>
<template id="producertemplate" />
<endpoint id="errorq"
uri="activemq:queue:bulk_ErrorQ?maxConcurrentConsumers=1&maxMessagesPerTask=-1"/>
<route>
<from ref="errorq"/>
<to uri="bean:errorhandler?method=handleError"/>
</route>
<route>
<from uri="activemq:queue:foo_test"/><!-- I manually sent a
message using jconsole -->
<process ref="foo"/><!-- this Processor just throws an Exception
-->
</route>
</camelContext>
What I see in the logs is:
[2009-10-05
14:48:31,330][FATAL][DefaultMessageListenerContainer-1][camel.processor.DeadLetterChannel(Logger)-log(208)]:
Failed delivery for exchangeId: ID-intblade06/60397-1254772096119/0-0. On
delivery attempt: 0 caught: java.lang.Exception: test exception
java.lang.Exception: test exception
at com.tuc.bulkchannel.Foo.process(Foo.java:11)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:189)
etc....
then again with "delivery attempt: 1"
then:
[2009-10-05
14:48:31,597][FATAL][DefaultMessageListenerContainer-1][camel.processor.DeadLetterChannel(Logger)-log(164)]:
Failed delivery for exchangeId: ID-intblade06/60397-1254772096119/0-0.
Handled by the failure processor:
RecipientList[activemq:queue:bulk_ErrorQ?transferExchange=true&maxMessagesPerTask=-1]
[2009-10-05
14:48:31,601][WARN][DefaultMessageListenerContainer-1][component.jms.EndpointMessageListener(EndpointMessageListener)-onMessage(98)]:
Endpoint[activemq:queue:foo_test] consumer caught an exception while
processing JMS message: ActiveMQTextMessage {commandId = 5, responseRequired
= false, messageId = ID:intblade06-40704-1253652628625-2:13:1:1:1,
originalDestination = null, originalTransactionId = null, producerId =
ID:intblade06-40704-1253652628625-2:13:1:1, destination = queue://foo_test,
transactionId = null, expiration = 0, timestamp = 1254772111181, arrival =
0, brokerInTime = 1254772111181, brokerOutTime = 1254772111181,
correlationId = null, replyTo = null, persistent = false, type = null,
priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null,
compressed = false, userID = null, content = null, marshalledProperties =
null, dataStructure = null, redeliveryCounter = 0, size = 0, properties =
null, readOnlyProperties = true, readOnlyBody = true, droppable = false,
text = qqq1}
org.apache.camel.RuntimeCamelException: java.lang.Exception: test exception
at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:874)
at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:81)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.
java:531)
etc...
Caused by: java.lang.Exception: test exception
at com.tuc.bulkchannel.Foo.process(Foo.java:11)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
etc...
and finally:
[2009-10-05
14:48:31,602][WARN][DefaultMessageListenerContainer-1][jms.listener.DefaultMessageListenerContainer(AbstractMessageListenerContainer)-handleListenerException(634)]:
Execution of JMS message listener failed
org.apache.camel.RuntimeCamelException: java.lang.Exception: test exception
at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:874)
at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:81)
Do I have something configured incorrectly? I tried to follow the
configuration sample on http://camel.apache.org/error-handler.html .
eric
--
View this message in context:
http://www.nabble.com/dead-letter-channel-never-delivered-to-the-uri-tp25756520p25756520.html
Sent from the Camel - Users mailing list archive at Nabble.com.