Skip to content

消息队列

消息队列用于跨模块、跨服务的异步解耦。RuoYi Office 框架侧提供 Redis Stream、Redis Pub/Sub、RabbitMQ、RocketMQ 等接入能力,核心代码位于 yudao-framework/yudao-spring-boot-starter-mq,多租户场景还在租户 Starter 中提供 RabbitMQ/RocketMQ 的租户上下文传递。

框架能力

类型关键类说明
Redis StreamRedisMQTemplateAbstractRedisStreamMessageListener适合可靠消费、待处理消息重投、消费组
Redis Pub/SubAbstractRedisChannelMessageListener适合轻量广播通知
RabbitMQYudaoRabbitMQAutoConfiguration适合 AMQP 队列场景
RocketMQ租户 MQ Hook/Initializer适合高吞吐消息、顺序或事务消息扩展
消息补偿RedisPendingMessageResendJobRedisStreamMessageCleanupJob处理 pending 消息重投和历史消息清理

典型链路

设计建议

  • 消息体只放必要字段:优先放业务 ID、事件类型、租户、时间戳,消费者再查业务详情。
  • 消费者必须幂等:Redis Stream pending 重投、MQ 重试都可能导致重复消费。
  • 明确失败策略:失败后是重试、入死信、记录补偿表,还是人工处理,要按业务风险决定。
  • 跨租户要传递租户上下文:不要在消费者里默认使用系统租户或空租户。

适用场景

场景建议
站内信/短信/邮件发送可用 MQ 或异步任务削峰,失败要可补偿
流程通知适合 MQ 解耦 BPM 与业务模块
IoT 设备消息高吞吐场景建议拆专用主题和消费组
商城订单状态同步必须保证幂等和顺序边界

排查清单

现象优先检查
消息没消费消费者是否启动;topic/stream/key 是否一致;消费组是否正确
重复消费幂等键是否设置;pending 重投是否触发;消费者异常是否反复重试
租户数据错乱消息是否携带租户;消费 Hook 是否生效
积压严重消费速度、单条耗时、消费组数量、下游数据库性能
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版