消息队列与RabbitMQ初探
本章学习目标
一、理论部分
1. 同步调用 vs. 异步消息
在传统的应用开发中,组件之间通常通过同步调用(如HTTP API、gRPC)进行通信。
异步消息模式引入了消息代理(Message Broker) 作为中间人。
2. 消息队列能解决什么问题?
-
应用解耦:微服务之间不再直接调用,而是通过消息队列通信,系统架构变得更灵活。
-
流量削峰:秒杀、抢购等场景下,将大量请求先存入队列,后端服务再根据自己的处理能力匀速消费。
-
异步通信:将非核心业务异步化,如注册成功后发送邮件/短信通知,提高主流程的响应速度。
-
最终一致性:在分布式系统中,通过消息队列实现事务的最终一致性。
3. 常见消息队列产品对比
为什么本系列选择RabbitMQ? 因为它成熟、稳定、功能丰富,提供了强大的消息路由功能和完善的管理界面,是学习消息队列和应对大多数业务场景的绝佳选择。
4. RabbitMQ简介
RabbitMQ是一个开源的消息代理和队列服务器,使用Erlang语言编写,实现了AMQP 0-9-1协议。它轻量级、易于部署,同时支持多种消息传递协议,并能在分布式系统中可靠地传输消息。
二、实操部分:搭建环境
上一章记录了Erlang和RabbitMQ的安装配置,这里再学习另一种环境搭建方式,使用Docker来运行RabbitMQ,这是最简单、最干净的方式,无需在本地安装Erlang和RabbitMQ服务。
1. 使用Docker部署RabbitMQ
确保你的机器上已经安装了Docker Desktop。
打开你的终端(PowerShell, CMD, 或 Bash),执行以下命令:
docker run -d \
--name my-rabbitmq \
-p 5672:5672 \ # AMQP协议端口,应用程序使用这个端口连接
-p 15672:15672 \ # HTTP管理界面端口
-e RABBITMQ_DEFAULT_USER=myuser \ # 设置默认用户名
-e RABBITMQ_DEFAULT_PASS=mypassword \ # 设置默认密码
rabbitmq:3-management
命令解释:
2. 访问管理控制台
容器启动后,打开你的浏览器,访问:http://localhost:15672
使用刚才设置的用户名(myuser)和密码(mypassword)登录。
你会看到一个功能丰富的管理后台,这是我们日后观察和调试RabbitMQ的利器。主要功能区域包括:
-
Overview:总览,显示整个集群的信息、数据统计等。
-
Connections:当前所有活跃的连接。
-
Channels:通道(Channel),基于连接创建的轻量级链接,大部分操作都在通道上进行。
-
Exchanges:交换机,消息的入口,根据规则将消息路由到队列。
-
Queues:队列,存储消息的地方。
-
Admin:管理用户、权限等。
3. 验证连接
你可以使用一个简单的命令来检查RabbitMQ服务是否正常运行:
如果看到类似 Server startup complete; ... 的日志,说明服务已成功启动。
总结
在这一章中,我们:
-
理解了为什么需要消息队列——解耦、削峰、异步。
-
认识了RabbitMQ及其在消息队列领域的地位。
-
使用Docker在本地搭建了一个带管理界面的RabbitMQ服务器。
-
登录了管理控制台,对其有了初步的印象。
来源:https://www.cnblogs.com/jixingsuiyuan/p/19089393 |