Sobes.tech
Senior

What do you know about Transactional Outbox and Saga? Share a practical case.

sobes.tech AI

Answer from AI

Transactional Outbox and Saga are patterns for ensuring data consistency in distributed systems and microservices.

  • Transactional Outbox is a pattern where changes in the database and sending messages to an event queue occur within a single transaction. Instead of directly sending a message, it is written to a special table (outbox). A separate process reads this table and publishes events to the queue. This guarantees that the message is not lost and not sent twice.

  • Saga is a pattern for managing distributed transactions through a sequence of local transactions with compensating actions. If one of the transactions fails, compensating operations are performed to rollback previous steps.

Practical case:

Imagine a microservice for order processing and a microservice for warehouse management. When an order is created, it is necessary to:

  1. Record the order in the database (Order Service).
  2. Reserve the product in the warehouse (Inventory Service).
  3. Send a notification to the customer.

Using Transactional Outbox in the Order Service: recording the order and recording the "OrderCreated" event in the outbox — within one transaction. Then, the event is published to the queue.

The Inventory Service listens to the queue, reserves the product. If reservation fails, the Saga triggers a compensating transaction — canceling the order.

This way, consistency between services is achieved without distributed transactions.

What do you know about Transactional Outbox and Saga… - sobes.tech