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