[
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