Files
ai_dify_plat_api/ruoyi-common/ruoyi-common-rabbitmq
2026-06-01 16:31:17 +08:00
..
2026-06-01 16:31:17 +08:00
2026-06-01 16:31:17 +08:00

RabbitMQ通用模块

简介

本模块提供了RabbitMQ的通用封装包括消息发送、接收、重试、死信队列等功能。

功能特性

  • 消息发送(普通消息、延迟消息)
  • 消息接收和消费
  • 消息重试机制
  • 死信队列处理
  • 消息确认机制
  • JSON消息转换
  • 完整的异常处理

使用方法

1. 添加依赖

在需要使用RabbitMQ的模块中添加依赖

<dependency>
    <groupId>org.dromara</groupId>
    <artifactId>ruoyi-common-rabbitmq</artifactId>
</dependency>

2. 配置文件

在application.yml中添加RabbitMQ配置

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /
    connection-timeout: 15000
    publisher-confirm-type: correlated
    publisher-returns: true
    listener:
      simple:
        acknowledge-mode: manual
        retry:
          enabled: true
          max-attempts: 3
          initial-interval: 1000

3. 发送消息

@Autowired
private RabbitMQService rabbitMQService;

// 发送普通消息
String messageId = rabbitMQService.sendMessage("Hello RabbitMQ!");

// 发送到指定交换机和路由键
String messageId = rabbitMQService.sendMessage("exchange.name", "routing.key", "消息内容");

// 发送延迟消息
String messageId = rabbitMQService.sendDelayMessage("exchange.name", "routing.key", "延迟消息", 5000);

4. 接收消息

@Component
public class MyConsumer {
    
    @RabbitListener(queues = "your.queue.name")
    public void handleMessage(String message) {
        // 处理消息
        System.out.println("接收到消息: " + message);
    }
}

核心类说明

RabbitMQService

主要的服务类,提供以下方法:

  • sendMessage(String content) - 发送消息到默认队列
  • sendMessage(String exchange, String routingKey, String content) - 发送消息到指定交换机和路由键
  • sendDelayMessage(String exchange, String routingKey, String content, long delayTime) - 发送延迟消息
  • retryMessage(RabbitMQMessage message) - 重试消息
  • sendToDeadLetter(String content, RabbitMQMessage originalMessage) - 发送到死信队列

RabbitMQMessage

消息实体类,包含以下字段:

  • messageId - 消息ID
  • content - 消息内容
  • messageType - 消息类型
  • exchange - 交换机名称
  • routingKey - 路由键
  • queueName - 队列名称
  • createTime - 创建时间
  • expireTime - 过期时间
  • retryCount - 重试次数
  • maxRetryCount - 最大重试次数
  • status - 消息状态
  • businessData - 业务数据

RabbitMQConstants

常量类,定义了默认的交换机、队列、路由键等配置。

注意事项

  1. 确保RabbitMQ服务已启动
  2. 根据实际需求调整队列和交换机的配置
  3. 合理设置消息的TTL和重试次数
  4. 处理死信消息,避免消息丢失
  5. 在生产环境中建议开启消息持久化

扩展

可以根据业务需求扩展以下功能:

  • 消息优先级
  • 消息路由规则
  • 消息过滤
  • 消息监控和统计
  • 集群支持