Processing domain events
Как использовать грамотно domain events без вытекания бизнес логики в контроллер
Last updated
Как использовать грамотно domain events без вытекания бизнес логики в контроллер
Last updated
Из книги Unit Testing: Principles, Practices, and Patterns Хориков, 177 страница
Проблема: Бывает, что при вызове метода, который меняет состояние в итоге ничего не должен менять. Database - это implementation details, Domain Events - это observable behavior.
Если вызов метода произошел, то он должен быть отображен для внешних систем. Поскольку database у нас только для внутреннего использования, то тут неважно, будет ли еще один запрос на изменение данных БД.
Наша цель отправлять event только в том случае, если сообщение реально изменилось.
Решение: создать в сущности список созданных событий, чтобы в контроллере не делать if, мол похож ли имейл, просто циклом пробегать, таким образом избегая логики в контроллере.
После: