一、RabbitMQ简介与Docker快速部署
1.1 什么是RabbitMQ?
-
基于AMQP协议的开源消息代理,支持多种消息模式。
-
核心概念:生产者、消费者、交换机(Exchange)、队列(Queue)、绑定(Binding)。
1.2 Docker部署RabbitMQ
bash
docker run --name mq \ -e RABBITMQ_DEFAULT_USER=hmall \ -e RABBITMQ_DEFAULT_PASS=hmall \ -v mq-plugins:/plugins \ -p 15672:15672 \ # 管理界面端口 -p 5672:5672 \ # AMQP协议端口 --network hmall \ -d \ rabbitmq:3.8-management
-
访问管理界面:
http://localhost:15672
,使用配置的用户名密码登录。
二、Java客户端基础配置
2.1 添加依赖与配置文件
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
yaml
spring: rabbitmq: host: 192.168.115.132 port: 5672 virtual-host: /hmall username: hmall password: hmall
2.2 生产者发送消息
java
@SpringBootTest public class PublisherTest { @Autowired private RabbitTemplate rabbitTemplate; @Test public void sendMessage() { rabbitTemplate.convertAndSend("simple.queue", "Hello RabbitMQ!"); } }
2.3 消费者监听消息
java
@Component public class Consumer { @RabbitListener(queues = "simple.queue") public void listen(String message) { System.out.println("Received: " + message); } }
三、工作模式(Work Queues)
3.1 能者多劳配置
yaml
spring: rabbitmq: listener: simple: prefetch: 1 # 每次只处理一个消息
3.2 多消费者示例
java
@RabbitListener(queues = "work.queue") public void worker1(String msg) throws InterruptedException { System.out.println("Worker1