Symfony - 故意发送失败的消息

Symfony - Sending Failed Messages on purpose

提问人:AureSanta 提问时间:9/26/2023 更新时间:9/26/2023 访问量:65

问:

我目前正在使用 Messenger 通过我的 MessageHandler 向 Mailer 发送邮件。

这是我的messenger.yaml配置文件。

# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            async: 
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                      table_name: messenger_message

            failed:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    queue_name: failed
                    table_name: messenger_message_failed

        routing:
            App\Message\SendEmailMessage: async

如何故意发送失败的消息以查看我的messenger_message_failed是否收到数据?

php symfony mailer symfony-messenger

评论


答:

3赞 AymDev 9/26/2023 #1

首先,您需要按照文档中所述配置故障传输

framework:
    messenger:
        failure_transport: failed
        # ...

然后在消息处理程序中,抛出一个异常:

throw new \Exception('testing the failure transport');

除非禁用重试,否则将重试该消息 3 次,然后移动到失败传输


请注意,在使用 Symfony Mailer 时,您可以通过将消息类路由到您的传输方式来使用 Messenger(如文档中所述)本地发送电子邮件:

framework:
    messenger:
        # ...

        routing:
            'Symfony\Component\Mailer\Messenger\SendEmailMessage': async

评论

0赞 AureSanta 9/26/2023
我在处理程序中添加了failure_transport和异常当我运行 messenger:consume -vv 命令时,我看到重试和异常,但消息被消耗了,messenger_message_failed表仍然是空:(
0赞 AymDev 9/26/2023
@AureSanta也许您也使用了失败传输中的消息?您只能通过运行 .如果这不能解决您的问题,我不知道您当前的设置有什么问题。asyncmessenger:consume -vv async
0赞 AureSanta 9/26/2023
它有效!问题是 id 默认值是在 messenger_message 表中设置的,但没有在messenger_message_failed表中设置,我修复了,我现在工作得很好,谢谢!
0赞 AymDev 9/26/2023
@AureSanta很奇怪,但很高兴你让它工作。如果你认为我的回答帮助你解决了你的问题,你可以接受我的回答。