Defines the outbox service API.
The outbox can be used to couple emitting of events on a service to the currently active transaction.
The following applies when using the outbox:
- If an event can't be persisted in the outbox the transaction fails.
- If the transaction fails, the event is not persisted in the outbox and never emitted.
- A persisted outbox entry is emitted eventually (asynchronously or synchronously, depending on the outbox implementation)