What is Reactor?
mainReactor is a dynamic, concurrent, dependency-resolving saga orchestrator. It is designed to provide transaction-like semantics across multiple distinct resources using the following principles:
- Saga Orchestration: Implements the saga pattern to manage distributed transactions.
- Dependency Resolution: Uses arguments to describe dependencies between saga steps. These arguments are converted into a Directed Acyclic Graph (DAG) to compute the correct execution order.
- Concurrency: Reactor automatically runs as many steps as possible concurrently, respecting the dependencies defined in the DAG.
- Dynamic Workflows: While you can define workflows statically using a DSL, you can also build workflows dynamically and even add new steps while a reactor is currently running.