Php Symfony 4-如果队列不存在,如何创建队列
我在Symfony 4应用程序中使用它与RabbitMQ通信Php Symfony 4-如果队列不存在,如何创建队列,php,rabbitmq,amqp,symfony4,Php,Rabbitmq,Amqp,Symfony4,我在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' routin
# 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
命令中的用法(只是一个片段):
我在Docker容器中运行应用程序。如果我从头开始启动它,RabbitMQ是空的。如果我在开发模式下运行命令php/orders/bin/console-app:collect-orders
,队列将自动创建。但是,如果我在prod模式下运行它,那么队列永远不会被创建,并且命令会因为“队列未找到”错误而崩溃
我的临时解决方案是在docker compose运行时开始时使用-e dev
参数调用一次命令,这不是很好
如果队列不存在,有人知道如何创建它吗
# 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);
}
}