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

Claus Ibsen updated CAMEL-4078:
-------------------------------

    Summary: Allow Splitter, Multicast and Recipient List to share unit of work 
with their sub exchanges to act as one operation that either succeed or fails  
(was: Allow EIPs which spawns sub routes to run in a sub unit of work, where 
sub message failures propagate back to the parent, acting as a kind of combined 
unit of work)

There is now a {{shareUnitOfWork}} option. 

> Allow Splitter, Multicast and Recipient List to share unit of work with their 
> sub exchanges to act as one operation that either succeed or fails
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-4078
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4078
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>             Fix For: 2.8.0
>
>
> Okay the title may sound confusing. The reason for this is we have end users 
> with common use cases which currently is a bit tricky to do.
> For example they want to split a big message, and process each sub message. 
> And in case of a failure during the processing of sub messages, they want 
> that error to propagate back to the big message. This is already possible 
> today as you use the AggregationStrategy, and its the default behavior. So 
> far so good.
> However the problem is that the sub messages may have been handled by an 
> error handler, such as moving to a dead letter queue. What the end users want 
> instead, is that none of the sub messages should go into the dead letter 
> queue, but instead that big message. To be able to do that, we need to 
> introduce a notion of sub unit of work. So we can mark a beginning and end of 
> a sub unit of work. Where the child exchanges can report back their progress 
> to the parent sub unit of work. And at the end of the sub unit of work, we 
> can check the state, whether there was any failure or not. In case of a 
> failure we can propagate that to the parent exchange, and have that act as a 
> single atomic unit of work (where the children participated). Then the error 
> handler can react upon the failure of the parent, and move that message into 
> a dead letter channel.
> The splitter example would most likely be the prime example. But you could 
> essentially also use a recipient list, or multicast, and want those child 
> exchanges participate in that same sub unit of work.
> There may be other EIPs supporting sub exchanges. However for this first 
> implementation we will do it on the splitter, recipient list and multicast, 
> as they all share the same core logic.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to