一、消息队列能解决什么问题?
- 异步处理:解耦耗时操作(如发短信、日志记录)
- 流量削峰:应对突发请求,避免系统过载
- 应用解耦:服务间通过消息通信,降低依赖
二、快速整合RabbitMQ
1. 环境准备
- 
安装RabbitMQ(推荐Docker一键部署): bashdocker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
- 
访问管理界面: http://localhost:15672(账号/密码:guest/guest)
2. Spring Boot项目配置
① 添加依赖
            
            
              xml
              
              
            
          
          <!-- pom.xml -->  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-amqp</artifactId>  
</dependency>  ② 配置连接信息
            
            
              yaml
              
              
            
          
          # application.yml  
spring:  
  rabbitmq:  
    host: localhost  
    port: 5672  
    username: guest  
    password: guest  
    virtual-host: /  三、核心代码实现
1. 生产者(发送消息)
            
            
              java
              
              
            
          
          @Component  
public class MsgProducer {  
    @Autowired  
    private AmqpTemplate amqpTemplate;  
    // 发送到指定队列  
    public void send(String message) {  
        amqpTemplate.convertAndSend("demo_queue", message);  
        System.out.println("消息已发送: " + message);  
    }  
}  2. 消费者(接收消息)
            
            
              java
              
              
            
          
          @Component  
public class MsgConsumer {  
    // 监听指定队列  
    @RabbitListener(queues = "demo_queue")  
    public void handle(String message) {  
        System.out.println("收到消息: " + message);  
    }  
}  3. 自动创建队列(可选)
            
            
              java
              
              
            
          
          @Configuration  
public class RabbitConfig {  
    // 声明队列(若不存在则自动创建)  
    @Bean  
    public Queue demoQueue() {  
        return new Queue("demo_queue");  
    }  
}  四、测试消息收发
            
            
              java
              
              
            
          
          @SpringBootTest  
class DemoApplicationTests {  
    @Autowired  
    private MsgProducer msgProducer;  
    @Test  
    void testSend() {  
        msgProducer.send("Hello RabbitMQ!");  
    }  
}  控制台输出:
消息已发送: Hello RabbitMQ!  
收到消息: Hello RabbitMQ!  五、扩展:常用注解与配置
| 注解/配置 | 说明 | 
|---|---|
| @RabbitListener | 监听队列或交换机消息 | 
| @RabbitHandler | 处理消息的方法注解 | 
| @Exchange+@Binding | 声明交换机与队列绑定关系 | 
| spring.rabbitmq.listener.simple.retry.enabled=true | 启用消费失败重试 | 
六、常见问题
- 
消息未消费 - 检查队列名是否一致
- 消费者是否添加了@Component注解
- 确认RabbitMQ服务是否正常运行
 
- 
连接失败 - 检查application.yml中的host、port、账号密码
- 防火墙是否开放5672端口
 
- 检查
- 
消息重复消费 - 启用消费者幂等处理
- 使用@RabbitListener(id = "唯一ID")
 
七、其他MQ整合(简要)
| MQ类型 | 依赖配置 | 核心注解 | 
|---|---|---|
| Kafka | spring-kafka | @KafkaListener | 
| RocketMQ | rocketmq-spring-boot-starter | @RocketMQMessageListener | 
八、总结
通过Spring Boot整合RabbitMQ只需三步:
- 加依赖 :spring-boot-starter-amqp
- 配连接 :application.yml中设置RabbitMQ地址
- 用注解 :@RabbitListener实现消息监听
官方文档 :Spring AMQP Reference