Saga engines and the event store?

Are there any recommended transactional safe saga-engine that works well with the event store that you would recommend when doing long-running transactions and other work?

I know saga engines can be pretty simple to implement , but in production you might want a more hardened saga engine with monitoring, admin tools…

It depends on the what you mean by works well. If you mean stores its
data outside on its own and can integrate existing ones would just
need a messaging adapter. If you mean where it stores its data (state)
in the event store as well that requires a bit more work.

NServiceBus, Mass Transit, bpls, biztalk, etc could all be used
relatively easily in the first scenario (needs an adapter) the
transactional aspects can be handled relatively easily even though 2pc
is not at this time supported externally (we have planned to support
though its not really needed, if you use expected version numbers its
idempotent). The second scenario requires changing the way they
internally hold state and is a bit more work. I know there are
projects underway to bring this.

There is a third option that you probably see if you concentrate on
the problem for a while. Use JavaScript. Although you could feasibly
use the projections framework to write long running processes into the
ES I would not highly recommend it :slight_smile:



Thanks for the answer.

Would there not be a market for you to create a “production ready saga engine” as well? That fits nicely with your event store? With all the production/admin needs filled?

Your event store fill one big piece of the CQRS puzzle, but there’s till other pieces to fill i think :slight_smile:

Are you in .NET? MassTransit or nsb would take a few hours to get
working out of the box (basically just an adapter so they can send
messages to the event store)