Symfony 4-如果不存在,如何创建队列

时间:2018-11-22 11:06:27

标签: php rabbitmq amqp symfony4

我在Symfony 4应用程序中使用Symfony Messenger Component与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,则会自动创建队列。但是,如果我以生产模式php /orders/bin/console app:collect-orders -e prod运行它,则永远不会创建该队列,并且该命令会因“找不到队列”错误而崩溃。

我的临时解决方案是在docker-compose运行时的开始使用-e dev参数调用一次命令,这不是很好。

有人知道如何创建不存在的队列吗?

0 个答案:

没有答案