整体架构位置
RabbitMQ 在项目中作为消息中间件,主要负责处理短信发送任务队列,实现异步处理和流量削峰。
核心组件
生产者(Producer):
位于服务端应用中
当系统需要发送短信时,将短信任务封装后发送到RabbitMQ
队列(Queue):
创建专用的短信发送队列
设置适当的消息持久化策略
可能配置死信队列处理发送失败的短信
消费者(Consumer):
独立的监听器组件负责消费队列中的短信任务
实现重试机制处理发送失败的短信
采用批量处理提高效率
消息处理流程
服务端产生短信发送需求
将短信任务序列化为JSON格式
发送到RabbitMQ的指定交换器
交换器将消息路由到特定队列
监听器从队列获取消息
调用短信网关API发送短信
处理发送结果,记录日志
关键配置
消息持久化: 确保重启后未处理的消息不丢失
确认机制: 确保消息处理成功后才从队列中删除
流量控制: 通过队列长度限制防止内存溢出
死信处理: 对失败消息进行特殊处理
并发控制: 限制同时处理消息的数量
架构优势
解耦: 短信发送逻辑与主业务逻辑分离
异步: 非阻塞方式处理短信发送
削峰: 缓冲突发的大量短信发送请求
可靠: 确保短信发送任务不会因服务重启而丢失