Глоссарий
Domain Event
Факт, произошедший в домене, интересный бизнесу. Именуется в прошедшем времени: OrderPlaced, PaymentReceived.
Domain Event — first-class citizen в domain-модели (Evans, 2003; развито Vernon).
Свойства:
- Прошедшее время в имени:
OrderPlaced, а неPlaceOrder. - Иммутабельность — событие произошло, изменить нельзя.
- Полнота контекста — содержит всё, что нужно consumer’у.
- Собирается aggregate, публикуется после commit.
Разница с Integration Event:
- Domain Event живёт внутри контекста.
- Integration Event — в контракте между контекстами. Стабильнее, публичнее.
Публикация: через Outbox pattern после commit транзакции. Публиковать до commit — риск ложной публикации, если транзакция откатится.