Reactor is a dynamic, concurrent, dependency resolving saga orchestrator.
Go to file
2024-07-18 21:57:51 +12:00
.github chore: add dependabot configuration. 2023-06-08 13:26:28 +12:00
.vscode feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
config feat: implement basic reactor behaviour. (#1) 2023-05-10 16:27:18 +12:00
documentation feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
lib feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
logos docs: Add reactor logos. 2024-06-14 17:58:03 +12:00
test feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
.check.exs chore: add mix spark.cheat_sheets to mix check. 2023-09-28 09:07:53 +13:00
.doctor.exs chore: Add doctor. 2023-06-23 15:19:46 +12:00
.formatter.exs feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
.gitignore init 2023-04-18 18:23:04 -04:00
.tool-versions chore: Update erlang and elixir. 2024-02-26 08:35:19 +13:00
CHANGELOG.md chore: release version v0.9.0 2024-07-18 21:57:51 +12:00
FUNDING.yml chore: Add FUNDING.yml. 2024-03-21 15:17:12 +13:00
LICENSE chore: Add Alembic to copyright and readme. 2023-06-15 14:57:32 +12:00
mix.exs chore: release version v0.9.0 2024-07-18 21:57:51 +12:00
mix.lock feat(map): Add the ability to map over elements of a collection inside a reactor. (#123) 2024-07-18 21:56:46 +12:00
README.md chore: release version v0.9.0 2024-07-18 21:57:51 +12:00

Logo Light Logo Dark

Reactor

Elixir CI License: MIT Hex version badge

Reactor is a dynamic, concurrent, dependency resolving saga orchestrator.

Woah. That's a lot. Let's break it down:

  • Saga orchestrator A saga is a way of providing transaction-like semantics across multiple distinct resources.
  • Dependency resolving reactor allows you to describe the dependencies between your saga steps using arguments which are converted into a DAG and used to compute execution order.
  • Concurrent unless otherwise specified reactor will run as many steps as possible concurrently whilst taking into account the results of the dependency resolution.
  • Dynamic whilst you can define a reactor statically using our awesome DSL, you can also build workflows dynamically - and even add steps while the reactor is running.

saga pattern

Sponsors

Thanks to Alembic Pty Ltd for sponsoring a portion of this project's development.

Installation

The package can be installed by adding reactor to your list of dependencies in mix.exs:

def deps do
  [
    {:reactor, "~> 0.9.0"}
  ]
end

Documentation

Documentation for the latest release will be available on hexdocs and for the main branch.

Contributing

  • To contribute updates, fixes or new features please fork and open a pull-request against main.
  • Please use conventional commits - this allows us to dynamically generate the changelog.
  • Feel free to ask any questions on the #reactor channel on the Ash Discord.

Licence

reactor is licensed under the terms of the MIT license. See the LICENSE file in this repository for details.