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&amp;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&amp;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.

Reply via email to