Всем привет, изучаю ddd и возник такой вопрос по ивентам. Допустим есть 2 контекста: user, panel. Создаем пользователя и создается событие
UserWasCreatedEvent
выбрасываем это событие где нибудь в очередь. Далее в другом контексте panel слушаем событие
UserWasCreatedEvent
из контекста user и что-нибудь делаем. И выходит что контекст panel имеет прямую зависимость из контекста user. Разве так это должно быть? Как можно избавится от этой зависимости к другому контексту?
Примерный код:
namespace User\Domain\Event;
class UserWasCreatedEvent
{
// event data
}
---------------------------------------------
namespace Panel\Domain\Event;
use User\Domain\Event;
class UserWasCreatedEventHandler
{
public function __invoke(UserWasCreatedEvent $createdEvent)
{
// do something
}
}
---------------------------------------------
namespace Shared\Infrastructure\EventSubscriber\Doctrine;
class DomainEventSubscriber
{
...
public function publish(): void
{
foreach ($this->entities as $entity) {
foreach ($entity->releaseEvents() as $event) {
$this->eventBus->dispatch($event);
}
}
}
}