概述
本文档介绍如何在SpringBoot中实现基于
RabbitMQ
的异步处理架构,以提高系统并发处理能力。
架构设计
- 接口层: 接收请求并进行数据校验
- 消息队列: 使用RabbitMQ进行异步处理
- 业务层: 执行具体的数据库交互逻辑
1. 项目依赖配置
Maven依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
配置文件
spring:
rabbitmq:
# RabbitMQ 服务器的基础连接信息
host: localhost # RabbitMQ 服务器的主机地址,默认为本机
port: 5672 # RabbitMQ 服务器的端口号,非管理界面端口(默认是5672)
username: guest # 登录 RabbitMQ 的用户名,默认为 guest
password: guest # 登录 RabbitMQ 的密码,默认为 guest
virtual-host: / # 使用的虚拟主机,默认为 "/"
listener:
simple:
concurrency: 5 # 初始消费者数量,即启动时创建的消费者线程数
max-concurrency: 10 # 最大消费者数量,用于动态扩展时的最大并发消费者数
prefetch: 10 # 每个消费者一次从队列中预取的消息数量,用于控制消息的消费速率
acknowledge-mode: auto # 消息确认模式,auto 表示自动确认(适用于大多数场景),manual 需要手动调用确认
template:
retry:
enabled: true # 开启 RabbitTemplate 发送消息时的重试机制
initial-interval: 1000 # 初始重试间隔时间,单位为毫秒(第一次失败后等待1秒重试)
max-attempts: 3 # 最大重试次数(包括首次发送,共尝试3次)
2. RabbitMQ配置
RabbitConfig.java
package com.erp.common.config;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.Binding;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* RabbitMQ配置类,用于定义消息队列、交换机和绑定关系
*/
@Configuration
@EnableRabbit
public class RabbitConfig {
// 定义业务队列的名称
public static final String BUSINESS_QUEUE = "busine