Symfony Messenger 4.3 - 从原则传输中获取消息失败(抛出异常)
Symfony Messenger 4.3 - Consuming messages from doctrine transport fails (exception thrown)
Symfony 版本:4.3.2
PHP: 7.2.20
我正在尝试将信使组件与学说传输异步使用。我已经在 Symfony Flex 的帮助下通过 composer require messenger
安装了 Messenger。
我在 .env.local
中通过 MESSENGER_TRANSPORT_DSN=doctrine://default
激活了学说传输。
在 messenger 配置中也配置了传输:
framework:
messenger:
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
'App\Message\SomeNotification': async
在控制器中使用 $this->dispatchMessage(new SomeNotification('some content'));
发送消息时一切正常。学说传输的 table messenger_messages
自动创建,消息正确保存在 table 中。
尝试使用 ./bin/console messenger:consume async
发送消息时出现以下错误:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Argument 2 passed to Symfony\Component\Messenger\Worker::__construct() must implement interface Symfony\Component\Messenger\MessageBusInterface, string given, called in ..../vendor/symfony/messenger/
Command/ConsumeMessagesCommand.php on line 190
所以Symfony\Component\Messenger\Command\ConsumeMessagesCommand
中的$routableBus为空导致实例化Worker时崩溃
问题的答案是将 symfony/framework-bundle
也更新为 4.3.2
。由于信使组件 composer.json
中的错误,框架包的 4.3.2
版本未强制执行。这会导致在将旧版本的 symfony/framework-bundle
与信使组件的 4.3.2
结合使用时出现默认配置错误。这解释了我的错误,因为我安装了 4.3.0
框架包。
更多信息可以在 GitHub 问题跟踪器上找到:
https://github.com/symfony/symfony/issues/32738
更新 symfony/framework-bundle
后一切正常。
Symfony 版本:4.3.2
PHP: 7.2.20
我正在尝试将信使组件与学说传输异步使用。我已经在 Symfony Flex 的帮助下通过 composer require messenger
安装了 Messenger。
我在 .env.local
中通过 MESSENGER_TRANSPORT_DSN=doctrine://default
激活了学说传输。
在 messenger 配置中也配置了传输:
framework:
messenger:
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
'App\Message\SomeNotification': async
在控制器中使用 $this->dispatchMessage(new SomeNotification('some content'));
发送消息时一切正常。学说传输的 table messenger_messages
自动创建,消息正确保存在 table 中。
尝试使用 ./bin/console messenger:consume async
发送消息时出现以下错误:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Argument 2 passed to Symfony\Component\Messenger\Worker::__construct() must implement interface Symfony\Component\Messenger\MessageBusInterface, string given, called in ..../vendor/symfony/messenger/
Command/ConsumeMessagesCommand.php on line 190
所以Symfony\Component\Messenger\Command\ConsumeMessagesCommand
中的$routableBus为空导致实例化Worker时崩溃
问题的答案是将 symfony/framework-bundle
也更新为 4.3.2
。由于信使组件 composer.json
中的错误,框架包的 4.3.2
版本未强制执行。这会导致在将旧版本的 symfony/framework-bundle
与信使组件的 4.3.2
结合使用时出现默认配置错误。这解释了我的错误,因为我安装了 4.3.0
框架包。
更多信息可以在 GitHub 问题跟踪器上找到:
https://github.com/symfony/symfony/issues/32738
更新 symfony/framework-bundle
后一切正常。