symfony 8.2为sync://增加retry和failure_transport选项:将两者显式开启,配置重试次数与失败转运,即可在同步处理失败后立即重试,并把最终失败消息留给后续检查。它要求8.2开发测试环境;同步重试不会等待retry_strategy中的延迟。
在同步传输上显式开启功能
下面示例假定项目已配置名为failed的失败传输,且App\Webhook\PaymentReceived及其处理器已经存在。保留项目原有连接信息,不用该片段覆盖全部Messenger配置。
# config/packages/messenger.yaml
framework:
messenger:
transports:
webhooks:
dsn: 'sync://?retry=true&failure_transport=true'
retry_strategy:
max_retries: 2
failure_transport: failed
routing:
App\Webhook\PaymentReceived: webhooks

Symfony 8.2官方示例文档截图。
理解请求内重试的结果
处理失败后会立即重试,延迟配置不参与等待;仍然失败时进入失败转运,而不再把该异常直接抛给调用方。请求处理代码应结合业务确认响应语义,不能把进入失败队列误当作处理成功。
重试动作仍在同步请求路径上,耗时及外部副作用需要按实际处理器评估。先用无副作用的测试消息检查重试次数。

Symfony 8.2官方示例文档截图。
检查并重试失败消息
使用项目的失败消息命令读取失败记录,再确认原因后重试。下面两条命令分别用于查看和重新投递,执行重试前应确认处理器可安全重复运行。
php bin/console messenger:failed:show php bin/console messenger:failed:retry











