Reliable communication using the Transactional Outbox Pattern