Версия Symfony: 4.3.2
PHP: 7.2.20
Я пытаюсь использовать компонент обмена сообщениями с транспортом доктрины асинхронно. Я установил мессенджер через composer require messenger
с помощью Symfony Flex.
Я активировал транспорт доктрины MESSENGER_TRANSPORT_DSN=doctrine://default
в .env.local
. В конфиге мессенджера также настраивается транспорт:
framework:
messenger:
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
'App\Message\SomeNotification': async
При отправке сообщения в контроллере с $this->dispatchMessage(new SomeNotification('some content'));
все нормально. Таблица messenger_messages
транспорта доктрины создается автоматически, и сообщение сохраняется в таблице правильно.
При попытке использовать сообщение с ./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
Таким образом, $ routableBus в Symfony\Component\Messenger\Command\ConsumeMessagesCommand
пуст, что приводит к сбою при создании экземпляра Worker.
failure_transport
, не существует. Просто скопируйтеtransport: async
какfailed
и, возможно, добавьте имя очередиfailed: '%env(MESSENGER_TRANSPORT_DSN)%?queue_name=failed'
- person dbrumann   schedule 25.07.2019bin/console debug:container 'Symfony\Component\Messenger\MessageBusInterface'
и проверить, действительно ли это служба, основанная на MessageBus? - person dbrumann   schedule 25.07.2019