CQRS у нас есть command / query, но что на счет ивентов?
Для команды или квери у нас есть юз кейс, а вот считается ли ивент юз кейсом ведь он лежит и принадлежит вообще другому слое, Domain? В то время как CQRS ето Application.
Так вот, условно я делаю handler который слушает Domain ивент UserRegistered, куда мне впихнуть етот хендлер? Все хендлеры это ES слой Infrastructure, но в тоже время это хендлер условной команды. Ведь различия между командой и ивентом минимальны. Несут минимум данных, говорят о событиях. Команда что должно произойти, ивент что уже произошло, оба диспачит ивент бас только разные интерфейсы и мидлваре.
Сейчас структура такая
Application -> CQRS -> Command / Query -> UseCase / Handler -> RegisterUser / RegsterUserHandler
Domain -> Entity -> Event -> UserRegisteredEvent
Infrastructure -> EventSourcing -> Bus -> Handlers -> UserRegisteredEventHandler / EmailVerifiedEventHandler ...
Тег симфони важен, потом что у нас есть как EventDispatcher так и EventBus, то есть 2 папки
Infrastructure -> EventSourcing -> EventDispatcher -> Listeners -> UserRegisteredListener
Infrastructure -> EventSourcing -> EventDispatcher -> Subscribers -> UserRegisteredSubscriber
Так что дополнительныая смыслова нагрузка для композиторов симфоний и дирижеров. Ведь EventDispatcher по моим соображением подходит исключительно и только для использования DomainEntityEvent, отличия от DomainEvent в том, что UserRegistered ивент всего домена, а UserPasswordUpdated это Entity. В первом нужна асинхронность, а во втором последовательность и синхронность что бы сохранить ивент в БД. Если у вас другие мысли на счет
Bus vs EventDispatcher вот впрос на который так и...
В общем, ваше мнение, куда ложить Domain event handler который был диспачнут через ивент bus как и команды / квери?
Почему вы так считаете?