[ 
https://issues.apache.org/activemq/browse/CAMEL-1037?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

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: https://issues.apache.org/activemq/browse/CAMEL-1037
>             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.

Reply via email to