GitHub user nicolaferraro opened a pull request: https://github.com/apache/camel/pull/2173
CAMEL-11665: Saga EIP This adds support for Sagas in Apache Camel. From the doc: *The Saga EIP provides a way to define a series of related actions in a Camel route that should be either completed successfully (all of them) or not-executed/compensated. Sagas implementations are able to coordinate distributed services communicating using any transport towards a globally consistent outcome.* I've provided a pretty long explanation on what Sagas are and how to use them in [the readme](https://github.com/nicolaferraro/camel/blob/e09f097bb7d02955700886afb3f04526d7eccdc3/camel-core/src/main/docs/eips/saga-eip.adoc). For now I've provided 2 implementations of the EIP: - In memory: a local implementation not suitable for production. It is included in `camel-core` - LRA: based on the [Microsprofile sandbox LRA spec](https://github.com/eclipse/microprofile-sandbox/tree/master/proposals/0009-LRA). In is included in the `camel-lra` module They have the same semantic, but the LRA implementation provides consistency guarantees in various degrees of system failure. Other implementations can be plugged in in the future. Both implementations are completely asynchronous (that's why some pieces of code may look ugly :smile:). There are some other features I plan to work on: - Asynchronous compensations and related callbacks - Evaluate ways to integrate it better with the rest subsystem - Suggestions You can merge this pull request into a Git repository by running: $ git pull https://github.com/nicolaferraro/camel saga Alternatively you can review and apply these changes as the patch at: https://github.com/apache/camel/pull/2173.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2173 ---- commit e09f097bb7d02955700886afb3f04526d7eccdc3 Author: Nicola Ferraro <ni.ferraro@...> Date: 2017-08-09T14:50:19Z CAMEL-11665: Saga EIP ---- ---