Files
ai_dify_plat_api/ruoyi-common/ruoyi-common-rabbitmq/README.md

134 lines
3.1 KiB
Markdown
Raw Normal View History

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