Events
Producers write event_outbox in the same database transaction as the business change. outbox-relay-service publishes the envelope to Redis Streams. Consumers append to inbox_messages and let InboxMessageWorker run the handler. Handlers must be idempotent on event_id.
Produced
- No transactional outbox. Upload completion is synchronous HTTP plus object storage.
Consumed
- No Redis stream consumers. Redis is a cache and rate-limit store.
Envelope fields that matter for operations: eventId, type, traceId (from X-Request-Id). See request correlation.