symfony - 对 Symfony Messenger 使用默认传输(跳过 amqp)

标签 symfony rabbitmq amqp

在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://

https://github.com/symfony/symfony/pull/30759

关于symfony - 对 Symfony Messenger 使用默认传输(跳过 amqp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920631/

相关文章:

sql - 通知: Undefined index in array result of native query doctrine

php - 有关安全环境中用户的最佳实践/操作指南

php - 为什么 Doctrine 要创造一场大迁徙?

authentication - RabbitMQ - ACCESS_REFUSED - 登录被拒绝

java - 如何在 Web 上下文中设置 RabbitMQ RPC

php - 如何在 Symfony 4.2 中将 Doctrine 实体管理器标记为 "lazy"

python - 如何使用 python pika 将 msg 发布到带有自签名证书的 rabbitmq 服务器?

node.js - amqplib - 尽管调用了channel.ack(msg),但消息仍未确认

RabbitMQ在消费者重新连接之前丢失消息

.net - 从客户端检查 RabbitMQ 队列大小