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:
eventIdeventTypeeventVersionoccurredAtproducertenantIdbrandIdcorrelationIdcausationIdactorpayload
Event evolution backward compatible: новые поля optional, старые не удаляются без новой major version.
Обратные ссылки
Автоссылки: где используется этот документ.