Skip to content

ash-project/reactor

Repository files navigation

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

Reactor contains an igniter installer, so if you have igniter installed already you can run mix igniter.install reactor to add Reactor to your app.

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

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

Documentation

Our documentation is organized to help you find exactly what you need:

🎓 Learning Reactor - Tutorials

Step-by-step guides that teach Reactor through hands-on practice:

🔧 Solving Problems - How-to Guides

Practical solutions for real-world scenarios:

📚 API Reference

Complete technical reference:

💡 Understanding Reactor - Explanations

Conceptual guides about how and why Reactor works:

Quick Start: New to Reactor? Start with the Getting Started tutorial!

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.

About

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

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  
  •  

Packages

No packages published

Contributors 10

Languages