Есть события у тебя через psr/event , а есть события в очереди https://habr.com/ru/articles/699492/
Очереди с хранением событий, подтверждением обработки и с повторными попытками при ошибках дают гарантию, что событие не потеряется и что когда-нибудь через пять минут слушатель поднимется и всё своё дообработает. А без очереди таких гарантий нет. Любой Exception в одном из слушателей может обрушить PHP-процесс и остальные слушатели не выполнятся. И даже если каждый вызов оборачивать в try-catch и повторно запускать в цикле, то контроллер не будет стоять запущенным пять минут, ожидая когда всё дообработается.
ну это уже надо все разбивать тогда на атомарные части, а без очередей транзакцию открыл, напихали модули запросов и закрыл, не отработало, ну и ладно, вернем ошибку
Да, на атомарные. Иначе при таком запуске трёх задач одним залпом транзакция из-за ошибки в третьем модуле откатилась, а письмо из второго модуля уже клиенту ушло.
Кстати а как вы валидируете реквесты? На уровне UI и передаете в контроллер уже проваледироанный запрос. Не увидел у вас в стриме в проекте файлов реквест
и там и там, первое от дурака защита, второе для корректности данных для сохранения
Ага, то есть файлы реквестов к модулям не имеют отношения они должны лежать на уровне контроллеров
Десериализую на Command и валидирую эту команду. Дальше домен всё проверяет с InvalidArgumentException. Отдельных Request нет.
ммм.... "домен всё проверяет с InvalidArgumentException"... обычно это странно, ну мол не самый распространенный эксепшен который может кинуть домен
контроллеры часть модуля.
Обсуждают сегодня