# RabbitMQ通用模块 ## 简介 本模块提供了RabbitMQ的通用封装,包括消息发送、接收、重试、死信队列等功能。 ## 功能特性 - 消息发送(普通消息、延迟消息) - 消息接收和消费 - 消息重试机制 - 死信队列处理 - 消息确认机制 - JSON消息转换 - 完整的异常处理 ## 使用方法 ### 1. 添加依赖 在需要使用RabbitMQ的模块中添加依赖: ```xml org.dromara ruoyi-common-rabbitmq ``` ### 2. 配置文件 在application.yml中添加RabbitMQ配置: ```yaml 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. 发送消息 ```java @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. 接收消息 ```java @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. 在生产环境中建议开启消息持久化 ## 扩展 可以根据业务需求扩展以下功能: - 消息优先级 - 消息路由规则 - 消息过滤 - 消息监控和统计 - 集群支持