Someone (4) [Avatar] Offline
In the diagram (Message Broker in the center, Saga Orchestrator on the left), you put "send message" in a transaction.
This is correct but confusing since by "send message" you mean "putting the message in the outbox table" which is transactional.
I would propose a different word than "send". For example "provision message" or even "outbox message".

I would prefer to have the standard transactional scenario covered as saga, i.e. transfer money from one service to another, such that no money is lost nor possible to double spend in case of failure.
It feels like this would need complicated locking, timeouts and cancels. This would make a good comparison with standard transactions.

A more axiomatic comparrison with the two phase commit could also be benefitial. Is a saga with a powerful message broker as good as a 2pc? What price do you pay.

Thanks for the chapters so far.