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
Date: 2017-08-09T14:50:19Z
CAMEL-11665: Saga EIP
---