提问人:AureSanta 提问时间:9/26/2023 更新时间:9/26/2023 访问量:65
Symfony - 故意发送失败的消息
Symfony - Sending Failed Messages on purpose
问:
我目前正在使用 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是否收到数据?
答:
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也许您也使用了失败传输中的消息?您只能通过运行 .如果这不能解决您的问题,我不知道您当前的设置有什么问题。async
messenger:consume -vv async
0赞
AureSanta
9/26/2023
它有效!问题是 id 默认值是在 messenger_message 表中设置的,但没有在messenger_message_failed表中设置,我修复了,我现在工作得很好,谢谢!
0赞
AymDev
9/26/2023
@AureSanta很奇怪,但很高兴你让它工作。如果你认为我的回答帮助你解决了你的问题,你可以接受我的回答。
评论