异步任务
请求和执行解耦。
任务分流
不同任务发送到Topic进行广播,随后不同Channel消费不同的任务类型。
场景一:集群消费(分摊压力)
- 设定:Topic =
订单创建,Channel =订单处理组- 效果:当有 100 个订单消息发到
订单创建Topic 时,订单处理组下的 3 台服务器会平分这 100 条消息,每台处理约 33 条。- 目的:提高吞吐量,防止单点瓶颈。
场景二:广播消费(通知所有人)
- 设定:Topic =
系统配置更新,Channel =各业务微服务- 效果:当配置更新消息发到 Topic 时,所有绑定了该 Topic 的 Channel(如订单服务、用户服务、支付服务)都会各自收到一份完整的消息。
- 目的:状态同步,缓存刷新。
MQ限流
超限时不是直接丢消息,而是等待配额。比如定时任务处理等流程。
死信队列
监控重试次数超限的消息。
DLQ Listener 的存在主要是为了兜底和排查问题,具体包括:
- 定位与排查故障:通过监听死信,开发人员可以回溯定位问题。例如,检查消息体是否损坏、格式是否正确,或者下游服务为何持续报错36。
- 告警与监控:如果 DLQ Listener 发现短时间内涌入大量死信,可以触发监控告警,提示系统出现了严重故障(如模型部署失败、上游发送了错误格式的请求等)4。
- 补偿与重发:在修复了导致失败的底层问题后,DLQ Listener 可以将这些消息重新发送到源队列,让系统再次尝试处理。
削峰
任务执行完成后,需要调用LLM记录session摘要,因此使用MQ进行异步summary。