Symfony 4 — Как создать очередь, если она не существует

я использую Компонент Symfony Messenger в моем приложении Symfony 4 для связи с RabbitMQ.

# config/packages/messenger.yaml

framework:
messenger:
transports:
new_orders: '%env(MESSENGER_TRANSPORT_DSN)%new_orders'
orders_progress: '%env(MESSENGER_TRANSPORT_DSN)%orders_progress'

routing:
'App\ValueObject\Message\OrderMessage': new_orders
'App\ValueObject\Message\OrderProgressMessage': orders_progress

Использование в команде (просто фрагмент):

# src/Command/CollectOrdersCommand.php
class CollectOrdersCommand extends Command
{
public function __construct(MessageBusInterface $queue);

protected function execute(InputInterface $input, OutputInterface $output): void
{
$msg = new OrderMessage();
$this->queue->dispatch($msg);
}
}

Я запускаю приложение в контейнерах Docker. Если я запускаю его с нуля, RabbitMQ пуст. Если я запускаю команду php /orders/bin/console app:collect-orders в режиме разработки очередь создается автоматически. Однако, если я запускаю его в режиме Prod php /orders/bin/console app:collect-orders -e prodочередь никогда не создается, и команда вылетает с ошибкой «очередь не найдена».

Мое временное решение — вызвать команду один раз в начале выполнения docker-compose с -e dev параметр, что не очень приятно.

Кто-нибудь знает, как создать очередь, если она не существует?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector