Я думаю, тебе стоит посмотреть на это с другой точки зрения. Позволь мне объяснить.
Вместо того, чтобы вызывать событие как результат вашего UseCaseA для обработки ваших побочных эффектов, таких как отправка электронного письма, событие, которое вы хотите вызвать, все равно должно быть событием домена, как вы описали.
Затем во время обработки этого c Доменного события вы можете вызвать «Событие приложения» (я бы назвал их событиями интеграции), которое затем обработало бы побочный эффект отправки электронного письма, выполняя мониторинг , ведение журнала ..
Это событие интеграции может охватывать несколько BC, служб и даже приложений.
Пример пошагового алгоритма:
- Начать выполнение UseCaseA
- Выполнение операций с сущностями, изменение состояния и т.д. c.
- Вызов события домена из домена
- Отправка события домена непосредственно перед завершением выполнения UseCaseA
- Перехватить событие домена в одном или нескольких обработчиках событий домена
- В одном из этих обработчиков вызвать событие интеграции для обработки побочных эффектов «в масштабе всего приложения»
- Обработать событие интеграции в интеграции Обработчик событий и отправка электронных писем, ведение журнала, мониторинг уведомлений и т. Д. c.
Событие интеграции может быть отправлено несколькими способами, но обычно через так я вроде автобус для мероприятий.