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
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 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