异步任务

请求和执行解耦。

任务分流

不同任务发送到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。