在messenger.yaml中,我将消息相应地路由到amqp
routing:
# Route your messages to the transports
'App\Message\SendNewsletterMessage': amqp
但在某些环境中,我没有安装 RabbitMQ,我想直接发送消息。我不想简单地注释掉该行,因为代码部署在多个地方。相反,我想将传输设置为内部调用(就好像它被注释掉一样),但我无法弄清楚默认传输的名称是什么。
routing:
# Route your messages to the transports
'App\Message\SendNewsletterMessage': '%env(MESSAGE_TRANSPORT)%' # amqp or...
然后我的环境变量可以是“amqp”或直接。使用什么传输方式进行直接调用?
最佳答案
Symfony 4.3 处理这个问题,“直接”传输称为同步:
# config/packages/messenger.yaml
framework:
messenger:
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
'App\Message\SmsNotification': async
'App\Message\OtherMessage': async
# .env
# by default, handle this sync
MESSENGER_TRANSPORT_DSN=sync://
关于symfony - 对 Symfony Messenger 使用默认传输(跳过 amqp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920631/