用途:把慢或易失败的工作从请求中移出,封装为消息并交给 #[AsMessageHandler] 处理器异步执行;也可用于选择传输(Doctrine、Redis、AMQP、sync://、in-memory://)并路由消息。
主要能力:创建只携带 ID 的 readonly 消息类;用 #[AsMessageHandler] 与带类型的 __invoke() 编写处理器,按 ID 重新获取数据并跳过已完成工作;用 #[AsMessage('async')] 或路由键路由消息,在 messenger.yaml 声明传输 DSN;设置 retry_strategy 与 failure_transport;用 messenger:consume async -vv 消费,并用 --limit、--memory-limit、--time-limit 限制;用 debug:messenger 与 messenger:stats 检查接线,测试中使用 in-memory://。
使用方式:消息只传实体 ID,不传 Doctrine 实体;投递为至少一次,重投消息应安静返回而非抛异常;PriorityStamp、--fetch-size、--no-reset、stop_worker_on_signals 标注为 8.1+,需先确认最低版本;部署时用 messenger:stop-workers 重启 worker。
限制:资料未提供具体版本兼容范围、性能数据与收费信息。