You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by janne postilista <ja...@gmail.com> on 2011/05/12 09:26:34 UTC

How do I configure a custom dead letter queue with transacted JMS route?

I have a route which reads from JMS queue A, does some processing, and
writes to queue B.

I want the queue to be transactional. I also want to define my own
custom dead letter queue for the failed messages.

Based on this post
http://camel.465427.n5.nabble.com/Transaction-Error-Handler-with-Dead-Letter-Channel-td3232320.html
this is not possible? Once you use transactions with JMS route, JMS
server (ActiveMQ) has all the control over redeliveries and dead
message queues when transaction fails.

Isn't this a big flaw? Often there's need to

1. Guarantee messages are not lost in case of server crashes, etc
2. Configure processing of failed messages differently from successful
messages, inside Camel. For example, I might have a case where
successful message should be sent to JMS queue X, or FTP location Y,
or whatever, but failed message should be stored on filesystem.

Re: How do I configure a custom dead letter queue with transacted JMS route?

Posted by janne postilista <ja...@gmail.com>.
Yes I know, but is it really so that you absolutely cannot configure
this (dead letters location) in camel?

I my case it would be preferable to configure it inside camel. For
example storing the failed message in filesystem, logging something
when it happens, etc. Having the same "dead letters" location with JMS
routes and other routes would be nice. Is it possible to achieve this
using custom errorhandlers for my queues, while defining the queue as
transactional at the same time?


On Thu, May 12, 2011 at 10:47 AM, Claus Ibsen <cl...@gmail.com> wrote:
> On Thu, May 12, 2011 at 9:26 AM, janne postilista
> <ja...@gmail.com> wrote:
>> I have a route which reads from JMS queue A, does some processing, and
>> writes to queue B.
>>
>> I want the queue to be transactional. I also want to define my own
>> custom dead letter queue for the failed messages.
>>
>
> ActiveMQ has dead letter queue support
> http://activemq.apache.org/message-redelivery-and-dlq-handling.html
>
> Just use that if you want to use a JMS queue for failed messages.
>
>
>
>> Based on this post
>> http://camel.465427.n5.nabble.com/Transaction-Error-Handler-with-Dead-Letter-Channel-td3232320.html
>> this is not possible? Once you use transactions with JMS route, JMS
>> server (ActiveMQ) has all the control over redeliveries and dead
>> message queues when transaction fails.
>>
>> Isn't this a big flaw? Often there's need to
>>
>> 1. Guarantee messages are not lost in case of server crashes, etc
>> 2. Configure processing of failed messages differently from successful
>> messages, inside Camel. For example, I might have a case where
>> successful message should be sent to JMS queue X, or FTP location Y,
>> or whatever, but failed message should be stored on filesystem.
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cibsen@fusesource.com
> Web: http://fusesource.com
> CamelOne 2011: http://fusesource.com/camelone2011/
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>

Re: How do I configure a custom dead letter queue with transacted JMS route?

Posted by Claus Ibsen <cl...@gmail.com>.
On Thu, May 12, 2011 at 9:26 AM, janne postilista
<ja...@gmail.com> wrote:
> I have a route which reads from JMS queue A, does some processing, and
> writes to queue B.
>
> I want the queue to be transactional. I also want to define my own
> custom dead letter queue for the failed messages.
>

ActiveMQ has dead letter queue support
http://activemq.apache.org/message-redelivery-and-dlq-handling.html

Just use that if you want to use a JMS queue for failed messages.



> Based on this post
> http://camel.465427.n5.nabble.com/Transaction-Error-Handler-with-Dead-Letter-Channel-td3232320.html
> this is not possible? Once you use transactions with JMS route, JMS
> server (ActiveMQ) has all the control over redeliveries and dead
> message queues when transaction fails.
>
> Isn't this a big flaw? Often there's need to
>
> 1. Guarantee messages are not lost in case of server crashes, etc
> 2. Configure processing of failed messages differently from successful
> messages, inside Camel. For example, I might have a case where
> successful message should be sent to JMS queue X, or FTP location Y,
> or whatever, but failed message should be stored on filesystem.
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
CamelOne 2011: http://fusesource.com/camelone2011/
Twitter: davsclaus
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/