Spring Boot集成RabbitMQ只需三步:加spring-boot-starter-amqp依赖、配置连接参数、用@Bean声明交换机队列绑定并用RabbitTemplate发送/@RabbitListener接收消息,支持手动确认与自动资源创建。

Spring Boot 集成 RabbitMQ 很直接,核心是三步:加依赖、配连接、声明组件并收发消息。不需要手动管理连接池或信道,Spring AMQP 封装得很到位。
引入 starter 依赖
在 pom.xml 中添加官方支持的 AMQP 启动器:
<dependency></dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-amqp</artifactid>
这个 starter 自动装配了 RabbitTemplate(用于发消息)和 @RabbitListener 基础设施(用于收消息),无需额外配置工厂类。
配置 RabbitMQ 连接参数
在 application.yml 中填写服务地址与基础选项:
spring:rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtual-host: /listener:simple:-
acknowledge-mode: manual(推荐手动确认) -
prefetch: 1(防消费者积压)
如果用在生产环境,建议单独创建虚拟主机(如 /prod),避免权限混用。
声明交换机、队列与绑定关系
用 @Configuration 类自动创建 RabbitMQ 资源,应用启动即生效:
- 定义一个持久化队列:
@Bean public Queue emailQueue() { return QueueBuilder.durable("email.queue").build(); } - 定义直连交换机:
@Bean public DirectExchange emailExchange() { return new DirectExchange("email.exchange"); } - 绑定它们:
@Bean public Binding emailBinding() { return BindingBuilder.bind(emailQueue()).to(emailExchange()).with("email.send"); }
这样就建立了「发邮件」这条消息链路:生产者 → email.exchange(带 routing key email.send)→ email.queue。
发送与接收消息
发送端直接注入 RabbitTemplate:
rabbitTemplate.convertAndSend("email.exchange", "email.send", user);
接收端用注解监听:
@RabbitListener(queues = "email.queue")public void onEmailMessage(User user, Channel channel, Message message) throws IOException {// 处理业务逻辑channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); // 手动确认}
注意:启用 acknowledge-mode: manual 后,必须显式调用 basicAck,否则消息会一直留在队列中重复投递。
不复杂但容易忽略。关键点在于资源声明自动化、确认机制可控、配置与代码职责分离。


















