camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <>
Subject Re: How to avoid blocking threads in JmsComponent with Oracle AQ
Date Sat, 21 Mar 2015 05:55:11 GMT

You should favor using the brokers redelivery settings instead of
Camel. Then you dont have blocked threads, or long running
transactions. Using Camel is better for short term redeliveries.

OracleAQ from such a big player must surely have some way of
configuring redelivery.

Apache ActiveMQ do have that.

On Fri, Mar 20, 2015 at 5:40 PM, Frank Ertl
<> wrote:
> Hi guys,
> we have the following scenario:
> Orders are stored to an Oracle AQ queue from where we read the messages by a
> JmsComponent and deliver the content to a webservice.
> If anything goes wrong we should redeliver the messages with exponential
> backoff starting with a delay of 15 minutes.
>     errorHandler(deadLetterChannel(MANUAL_QUEUE_CHANNEL_URI)
>         .asyncDelayedRedelivery()
>         .maximumRedeliveries(8)
>         .redeliveryDelay(900000)
>         .onRedelivery(waitingStateProcessor)
>         .backOffMultiplier(2)
>         .retryAttemptedLogLevel(LoggingLevel.INFO)
>         .retriesExhaustedLogLevel(LoggingLevel.ERROR));
>         from("jms:order_queue")
>         .process(orderProcessor)
>         .to("cxf:bean:orderWS");
> Because we don't want to loose any orders in case of a server crash the
> JsmComponent is set to transacted. Reading the documentation I came to the
> conclusion that asyncDelayedRedelivery() does not work for transacted
> routes, which proofs to be true as the threads are blocked when the failed
> messages reaches the maximum threadcount.
> Is there another way with camel to do the required redelivery without
> blocking the threads? Using a timer?
> Regards,
> Frank
> --
> View this message in context:
> Sent from the Camel - Users mailing list archive at

Claus Ibsen
Red Hat, Inc.
Twitter: davsclaus
Author of Camel in Action:

View raw message