整体架构位置

RabbitMQ 在项目中作为消息中间件,主要负责处理​​短信发送任务队列​​,实现异步处理和流量削峰。

核心组件

  1. ​生产者(Producer)​​:

    • 位于服务端应用中

    • 当系统需要发送短信时,将短信任务封装后发送到RabbitMQ

  2. ​队列(Queue)​​:

    • 创建专用的短信发送队列

    • 设置适当的消息持久化策略

    • 可能配置死信队列处理发送失败的短信

  3. ​消费者(Consumer)​​:

    • 独立的监听器组件负责消费队列中的短信任务

    • 实现重试机制处理发送失败的短信

    • 采用批量处理提高效率

消息处理流程

  1. 服务端产生短信发送需求

  2. 将短信任务序列化为JSON格式

  3. 发送到RabbitMQ的指定交换器

  4. 交换器将消息路由到特定队列

  5. 监听器从队列获取消息

  6. 调用短信网关API发送短信

  7. 处理发送结果,记录日志

关键配置

  • ​消息持久化​​: 确保重启后未处理的消息不丢失

  • ​确认机制​​: 确保消息处理成功后才从队列中删除

  • ​流量控制​​: 通过队列长度限制防止内存溢出

  • ​死信处理​​: 对失败消息进行特殊处理

  • ​并发控制​​: 限制同时处理消息的数量

架构优势

  • ​解耦​​: 短信发送逻辑与主业务逻辑分离

  • ​异步​​: 非阻塞方式处理短信发送

  • ​削峰​​: 缓冲突发的大量短信发送请求

  • ​可靠​​: 确保短信发送任务不会因服务重启而丢失