Tots els missatges s'envien en format JSON. Cada missatge inclou sempre els camps event_type i timestamp (ISO 8601), a més dels camps específics de l'esdeveniment. La clau de partició és sempre l'order_id, cosa que garanteix l'ordre dels missatges per a una mateixa comanda.
Sol·licita la reserva d'estoc a inventory-service per iniciar la Saga.
{
"event_type": "ReserveStockRequested",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"items": [
{ "product_id": "PROD-001", "quantity": 2 }
],
"timestamp": "2026-04-13T10:00:00Z"
}Sol·licita el processament del pagament a payments-service un cop l'estoc ha estat reservat.
{
"event_type": "ProcessPaymentRequested",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"amount": 59.98,
"timestamp": "2026-04-13T10:00:01Z"
}Sol·licita l'alliberament de la reserva d'estoc quan el pagament falla (acció compensatòria).
{
"event_type": "ReleaseReservationRequested",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:03Z"
}Notifica que la comanda ha estat confirmada completament.
{
"event_type": "OrderConfirmed",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:02Z"
}Notifica que la comanda ha estat cancel·lada.
{
"event_type": "OrderCancelled",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:03Z"
}Confirma que l'estoc ha estat reservat correctament.
{
"event_type": "StockReserved",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:01Z"
}Informa que no s'ha pogut reservar l'estoc (estoc insuficient).
{
"event_type": "StockReservationFailed",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"reason": "Not enough stock for PROD-OUT (requested: 1, available: 0)",
"timestamp": "2026-04-13T10:00:01Z"
}Confirma que la reserva ha estat alliberada i l'estoc restaurat.
{
"event_type": "ReservationReleased",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:04Z"
}Informa que una reserva ha expirat sense ser resolta (publicat pel rake task).
{
"event_type": "ReservationExpired",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:15:00Z"
}Confirma que el pagament s'ha processat correctament.
{
"event_type": "PaymentSucceeded",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"amount": 59.98,
"timestamp": "2026-04-13T10:00:02Z"
}Informa que el pagament ha fallat.
{
"event_type": "PaymentFailed",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-04-13T10:00:02Z"
}orders-service
└─► reserve-stock-requested ──► inventory-service
├─► stock-reserved ──► orders-service
│ └─► process-payment-requested ──► payments-service
│ ├─► payment-succeeded ──► orders-service (CONFIRMED)
│ └─► payment-failed ──► orders-service
│ └─► release-reservation-requested ──► inventory-service (CANCELLED)
└─► stock-reservation-failed ──► orders-service (CANCELLED)