RabbitMQ
2025/11/1大约 4 分钟
RabbitMQ基本概念和功能
RabbitMQ是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP),提供了可靠的消息传递机制。下面是RabbitMQ的基本概念和功能:
- 消息队列:RabbitMQ提供了消息队列功能,可以让生产者将消息发送到队列中,让消费者从队列中接收消息。消息队列可以帮助开发者实现异步处理、应用解耦和流量削峰。
- 交换机:RabbitMQ提供了交换机功能,可以让生产者将消息发送到交换机,然后交换机根据路由规则将消息路由到一个或多个队列中。交换机支持多种类型,包括直连交换机、主题交换机、扇形交换机和头部交换机。
- 消息确认:RabbitMQ提供了消息确认机制,可以确保消息被正确处理。消费者在处理完消息后,需要向RabbitMQ发送确认信号,RabbitMQ才会将消息从队列中移除。
- 消息持久化:RabbitMQ提供了消息持久化功能,可以将消息和队列持久化到磁盘中,确保即使RabbitMQ服务器重启,消息也不会丢失。
为什么要用RabbitMQ?
使用RabbitMQ有以下几个优点:
- 可靠性:RabbitMQ提供了消息确认、消息持久化和集群部署等机制,可以确保消息的可靠传递。
- 灵活性:RabbitMQ支持多种交换机类型和路由规则,可以满足不同的消息传递需求。
- 高可用性:RabbitMQ支持集群部署和镜像队列,可以保障RabbitMQ的高可用性。
- 易于集成:RabbitMQ提供了多种客户端库,可以方便地与Java、Python、Ruby等多种编程语言集成。
- 社区活跃:RabbitMQ是一个开源项目,有着庞大的社区支持和活跃的开发者社区,可以保证RabbitMQ的更新和维护。
总之,使用RabbitMQ可以帮助开发者实现异步处理、应用解耦和流量削峰,提高应用程序的可用性、灵活性和可维护性。
RabbitMQ应用场景?
RabbitMQ主要应用于异步处理、应用解耦、流量削峰、日志收集和系统集成等场景,可以帮助开发者构建高可用、高可靠的分布式应用。
RabbitMQ核心组件
RabbitMQ的核心组件包括:
- Producer:生产者,用于发送消息到RabbitMQ。
- Consumer:消费者,用于从RabbitMQ接收消息。
- Exchange:交换机,用于接收生产者发送的消息,并将消息路由到队列中。
- Queue:队列,用于存储消息,等待消费者消费。
- Binding:绑定,用于将交换机和队列绑定在一起,并指定路由键。
RabbitMQ核心架构图
+------------------+ +------------------+ +------------------+
| Producer | | Producer | | Producer |
| | | | | |
+------------------+ +------------------+ +------------------+
| | |
| | |
| | |
+------------------+ +------------------+ +------------------+
| Exchange | | Exchange | | Exchange |
| | | | | |
+------------------+ +------------------+ +------------------+
| | |
| | |
| | |
+------------------+ +------------------+ +------------------+
| Queue | | Queue | | Queue |
| | | | | |
+------------------+ +------------------+ +------------------+
| | |
| | |
| | |
+------------------+ +------------------+ +------------------+
| Consumer | | Consumer | | Consumer |
| | | | | |
+------------------+ +------------------+ +------------------+在上面的架构图中,分别展示了生产者将消息发送到交换机,交换机根据路由规则将消息路由到队列中,然后消费者从队列中接收消息。
RabbitMQ安装与测试
Windows安装
1、下载Erlang
RabbitMQ依赖Erlang,首先从Erlang官网下载并安装适合Windows的Erlang版本。
2、下载RabbitMQ
从RabbitMQ官网下载Windows安装包。
3、安装RabbitMQ
运行下载的安装包,按照提示完成安装。
4、启动RabbitMQ服务
# 启动RabbitMQ服务
net start RabbitMQ
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management5、访问管理界面
http://localhost:15672/
默认用户名密码:guest/guest
Linux安装
1、安装Erlang
# Ubuntu/Debian
sudo apt update
sudo apt install erlang
# CentOS/RHEL
sudo yum install erlang2、安装RabbitMQ
# 导入签名密钥
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 添加RabbitMQ仓库
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq/debian bionic main
EOF
# 更新并安装
sudo apt update
sudo apt install rabbitmq-server3、启动RabbitMQ服务
# 启动服务
sudo systemctl start rabbitmq-server
# 启用管理插件
sudo rabbitmq-plugins enable rabbitmq_management
# 设置开机自启
sudo systemctl enable rabbitmq-server4、访问管理界面
http://localhost:15672/
默认用户名密码:guest/guest
Docker安装
1、Docker 拉取镜像
docker pull rabbitmq:3.12.0-management2、启动RabbitMQ
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
--restart=always \
rabbitmq:3.12.0-management3、访问管理界面
http://localhost:15672/
默认用户名密码:guest/guest
Spring Boot 整合 RabbitMQ
1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>2、配置RabbitMQ
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /3、创建队列和交换机
@Configuration
public class RabbitMQConfig {
@Bean
public Queue queue() {
return new Queue("hello.queue", true);
}
@Bean
public DirectExchange exchange() {
return new DirectExchange("hello.exchange", true, false);
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(exchange()).with("hello.routing");
}
}4、发送消息
@Service
public class MessageProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String message) {
rabbitTemplate.convertAndSend("hello.exchange", "hello.routing", message);
}
}5、接收消息
@Service
public class MessageConsumer {
@RabbitListener(queues = "hello.queue")
public void receiveMessage(String message) {
System.out.println("收到消息:" + message);
}
}