3.1 KiB
3.1 KiB
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- 消息IDcontent- 消息内容messageType- 消息类型exchange- 交换机名称routingKey- 路由键queueName- 队列名称createTime- 创建时间expireTime- 过期时间retryCount- 重试次数maxRetryCount- 最大重试次数status- 消息状态businessData- 业务数据
RabbitMQConstants
常量类,定义了默认的交换机、队列、路由键等配置。
注意事项
- 确保RabbitMQ服务已启动
- 根据实际需求调整队列和交换机的配置
- 合理设置消息的TTL和重试次数
- 处理死信消息,避免消息丢失
- 在生产环境中建议开启消息持久化
扩展
可以根据业务需求扩展以下功能:
- 消息优先级
- 消息路由规则
- 消息过滤
- 消息监控和统计
- 集群支持