steno 0.3.1

distributed saga implementation
Documentation

Steno is an in-progress prototype implementation of distributed sagas. Sagas orchestrate the execution of a set of asynchronous tasks that can fail. The saga pattern provides useful semantics for unwinding the whole operation when any task fails. For more on distributed sagas, see this 2017 JOTB talk by Caitie McCaffrey.

Overview

  • Write some functions that will be used as actions and undo actions for your saga. Package these up with [ActionFunc::new_action()].
  • Add these actions to an [ActionRegistry]
  • Use [DagBuilder] to construct a graph of these actions. Wrap this up in a [SagaDag].
  • Construct a saga execution coordinator with [sec()] and use that to run the saga. You can start with an [InMemorySecStore] or impl your own [SecStore].

This crate is necessarily somewhat complex to use. For a detailed, documented example, see examples/trip.rs.