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: 
http://camel.465427.n5.nabble.com/How-to-avoid-blocking-threads-in-JmsComponent-with-Oracle-AQ-tp5764487.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to