RabbitMQ 消息队列:从入门到实战

1. 什么是 RabbitMQ?

RabbitMQ 是一个开源的消息代理软件,实现了高级消息队列协议(AMQP)。它允许应用程序通过消息进行异步通信,支持多种消息模式,包括点对点、发布/订阅、路由和主题等。

2. 核心概念

  • Producer(生产者):发送消息的应用程序。
  • Consumer(消费者):接收消息的应用程序。
  • Queue(队列):存储消息的缓冲区。
  • Exchange(交换机):接收生产者发送的消息,并根据路由规则将消息分发到队列。
  • Binding(绑定):连接交换机和队列的规则。
  • Routing Key(路由键):生产者发送消息时指定的关键字,用于决定消息路由到哪个队列。

3. 安装与配置

3.1 Docker 安装

bash 复制代码
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

安装完成后,可以通过浏览器访问 http://localhost:15672 进入管理界面,默认用户名和密码均为 guest

4. 基本使用示例

4.1 生产者示例(Python)

python 复制代码
import pika
建立连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
声明队列
channel.queue_declare(queue='hello')
发送消息
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")
关闭连接
connection.close()

4.2 消费者示例(Python)

python 复制代码
import pika
建立连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
声明队列
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(f" [x] Received {body}")
消费消息
channel.basic_consume(queue='hello',
auto_ack=True,
on_message_callback=callback)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

5. 交换机类型

  • Direct Exchange(直连交换机):根据路由键精确匹配队列。
  • Fanout Exchange(扇出交换机):将消息广播到所有绑定的队列。
  • Topic Exchange(主题交换机):根据路由键模式匹配队列。
  • Headers Exchange(头交换机):根据消息头属性匹配队列。

6. 高级特性

6.1 消息确认

消费者处理完消息后需要发送确认,确保消息不会丢失。

6.2 持久化

将队列和消息标记为持久化,即使 RabbitMQ 重启也不会丢失。

6.3 死信队列

处理无法被正常消费的消息,避免消息堆积。

7. 总结

RabbitMQ 是一个功能强大的消息队列中间件,广泛应用于微服务架构、异步任务处理、系统解耦等场景。掌握其核心概念和基本用法,能够帮助开发者构建更健壮、可扩展的分布式系统。

相关推荐
爱浦路 IPLOOK12 分钟前
矿山无人化作业5G专网方案:企业专网核心网络选型分析
网络·分布式·科技·5g·信息与通信
实战派K8S&DB1 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
实战派K8S&DB2 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
小白羊丨2 小时前
Kafka任务重试、退避与失败恢复怎么做?
分布式·kafka
jyOverQ8 小时前
RabbitMQ 延迟消息怎么实现?TTL 与死信队列
分布式·后端·rabbitmq·ruby
zcmodeltech9 小时前
工程车模型多车型动作控制系统设计与实现方案——基于STM32与Modbus RTU的挖掘机、装载机、自卸车、起重机、电力工程车全场景控制方案,服务范围覆盖全国
分布式·stm32·单片机·嵌入式硬件·交互
StevenSurpass13 小时前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
江畔柳前堤1 天前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
夕除1 天前
redis--010
笔记·分布式·学习
寻求出路的程序媛1 天前
分布式 & 高性能 & 高可用 体系、学习重点、面试点
分布式·后端·面试·性能优化