2

我正在尝试在没有 Symfony 框架的项目中使用 Symfony Messenger。

class MessengerCommandBus implements CommandBusInterface
{
    /**
     * @var MessageBusInterface
     */
    private MessageBusInterface $commandBus;

    public function __construct(MessageBusInterface $commandBus)
    {

        $this->commandBus = $commandBus;
    }

    public function dispatch(CommandInterface $command): void
    {
        $this->commandBus->dispatch($command);
    }
}

我想在我的控制器中使用它(php8)

final class DirectionController
{
    public function __construct(
        private CommandBusInterface $commandBus
        private QueryBusInterface $queryBus
    ) {}
    public function createDirection() {
        $this->commandBus->dispatch(new CreateDirectionCommand('Symfony'));
    }
}

我将控制器和总线放入 services.yml

direction.web.controller:
    class: 'Company\Infrastructure\Web\DirectionController'
    autowire: true
    public: true

Company\Application\CQRS\Command\CommandBusInterface $commandBus: '@Company\Infrastructure\Bus\MessengerCommandBus'

但当然,我需要MessageBusInterfaceMessengerCommandBus. 使用 Symfony 框架,我可以使用它来创建它,messenger.yml但我使用的是独立的组件,我没有它。在这种情况下我可以在哪里配置总线?我应该创建一个新的 MessengerBus$commandBus = new MessageBus([])$queryBus = new MessageBus([])它没有实现 MessageBusInterface 还是应该在另一个地方配置它?我无法理解有关 Messenger的文档((

4

0 回答 0