camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Krasser (JIRA)" <>
Subject [jira] Updated: (CAMEL-1037) Messages in Resequencer between 2 JMS queues get stuck
Date Mon, 08 Dec 2008 13:10:05 GMT


Martin Krasser updated CAMEL-1037:

    Attachment: camel-1.x.patch

Attached is a patch that fixes this issue and also issue CAMEL-393. What has been done in
this patch:

* I removed the polling consumer from the BatchProcessor because it 
** competes with other threads e.g. those that consume messages from a JMS queue (already
described in CAMEL-642 and CAMEL-1034). 
** it consumes messages directly from the starting-endpoint of the current route (obtained
via {{routeContext.getEndpoint()}}). This caused CAMEL-393.
* BatchProcessor now queues up exchanges which are then sent by a separate thread. The separate
thread is needed to deal with timeouts. The old BatchProcessor implementation also stored
exchanges in memory so there is at least no decrease in QoS with this patch. Reliable batch
processing (and stream-resequencing) will be addressed with issue CAMEL-949 (for which I don't
have a patch yet).   
* CAMEL-393 was reported for the aggregator but the same problems arise for the batch resequencer
and stream resequencer. All three can now be used in route definitions as requested in CAMEL-393.
(This required to remove the polling consumer from the StreamResequencer too).

CAMEL-1037 came up because because in Camel 1.4 the {{org.apache.camel.Processor}} interface
was introduced for the BatchProcessor with an empty {{process(Exchange)}} implementation.
The JMS consumer threads competed with the polling thread of the batch processor where all
exchanges delivered via the JMS consumer threads have been lost (i.e. {{process(Exchange)}}
ignored those exchanges). 

So far I created this patch for the Camel-1.x branch because I'm not sure if you (comitters,
others) already thought about a different solution to this problem for Camel 2.0. If you don't
have any objections to this patch please tell me and I'll create one for the current trunk.

> Messages in Resequencer between 2 JMS queues get stuck
> ------------------------------------------------------
>                 Key: CAMEL-1037
>                 URL:
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 1.5.0
>            Reporter: Jonathan Anstey
>         Attachments: camel-1.x.patch
> Martin describes the issue as follows in CAMEL-1034:
> "The issue with the regular resequencer (the one that extends the BatchProcessor) remains
because the process(Exchange) method is empty. In addition to the BatchProcessor's polling
consumer, an additional JmsConsumer is created by the JMS endpoint that competes with the
polling consumer. The JmsConsumer then calls the empty process(Exchange) method and the exchange
is lost."

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message