Symfony Messenger 4.3 - сбой при получении сообщений от транспорта доктрин (исключение выдается)

Версия 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.

1 ответ

Ответ на вопрос заключается в обновлении 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 все работает как положено.

Другие вопросы по тегам