Перейти к основному содержимому

ADR-0006: Kafka, MassTransit, Outbox/Inbox И Envelope

Статус

Accepted

Контекст

Сервисы должны реагировать на регистрации, депозиты, ставки, выигрыши, KYC, промокоды, бонусы и provider sync без жесткой синхронной связности. Нужна трассируемость и совместимость версий событий.

Решение

Используем Kafka через MassTransit. Для бизнес-событий обязателен встроенный MassTransit Transactional Outbox при публикации и MassTransit Consumer Inbox + business idempotency при потреблении.

Собственные service-specific OutboxMessage/InboxMessage сущности не создаем. Техническая схема Inbox/Outbox принадлежит MassTransit EF Core integration и документируется в MassTransit Inbox/Outbox.

Все сообщения используют envelope:

  • eventId
  • eventType
  • eventVersion
  • occurredAt
  • producer
  • tenantId
  • brandId
  • correlationId
  • causationId
  • actor
  • payload

Event evolution backward compatible: новые поля optional, старые не удаляются без новой major version.

Обратные ссылки

Автоссылки: где используется этот документ.