消息队列小白教程
2026/7/2 1:41:43 网站建设 项目流程

你是不是经常听到别人聊消息队列、RabbitMQ、Kafka 这些词,但总觉得云里雾里?别慌,这篇教程就是给你这种新手写的。我不会跟你扯那些高大上的概念,就用大白话告诉你:消息队列是个啥、为啥要用它、RabbitMQ 和 Kafka 怎么选、怎么用。

一、消息队列是个啥?
先说个生活中的例子。你去麦当劳点餐,点完之后会拿到一个小票,然后你不用站在柜台等着,而是找个位置坐下,等服务员叫号。这个小票加叫号其实就是消息队列的思想。

在技术里,消息队列(Message Queue)就是个中转站:
●A 系统产生了一条消息(比如用户下单了)
●A 系统把消息扔到队列里,不用管谁来处理
●B 系统从队列里拿出消息,自己慢慢处理
●A 和 B 互不干扰,想停哪个停哪个

简单说:消息队列就是个存消息的盒子,生产者往里扔,消费者从里拿,两边互不认识,也不用同时在线。

二、为啥要用消息队列?
你可能会问:我直接调用不行吗?比如 A 系统直接调用 B 系统?行,但有几个问题:

  1. 解耦(让系统之间别绑太紧)
    如果 A 直接调用 B、C、D,那 A 就得知道 B、C、D 的存在。哪天 B 改了接口,A 也得跟着改。用了消息队列,A 只管发消息,B、C、D 自己订阅,互不影响。

  2. 异步(让慢的别拖快的后腿)
    用户下单后,你可能需要:扣库存、发短信、发邮件、记日志… 如果全部同步做,用户得等好几秒。用了消息队列,主流程(扣库存)做完就告诉用户下单成功,其他事情扔给队列慢慢做。

  3. 削峰(应对突然的流量洪峰)
    双十一零点,每秒几万个订单进来,你的数据库扛不住。用了消息队列,可以把请求先存起来,系统按照自己的节奏慢慢处理,不会被冲垮。

三、RabbitMQ 怎么玩?
RabbitMQ 是个传统型消息队列,就像邮局一样:你扔封信进去,邮局帮你送到收件人手里。它稳定、易用,适合大部分场景。

核心概念(记住这4个就够了)
●Producer(生产者):发消息的那方,比如订单系统
●Queue(队列):存消息的盒子,消息在里面排队
●Consumer(消费者):拿消息的那方,比如库存系统
●Exchange(交换机):负责把消息分到不同的队列(就像邮局的分拣中心)

怎么安装(超简单)
Windows 用户:
●去 RabbitMQ 官网下载安装包(带 Erlang 的版本)
●双击安装,一路 Next
●安装完后,访问 http://localhost:15672,账号密码都是 guest

Mac 用户:
●brew install rabbitmq
●brew services start rabbitmq

怎么用(Python 示例)
先装个库:pip install pika

发送消息(生产者):

import pika

连接 RabbitMQ

connection = pika.BlockingConnection(pika.ConnectionParameters(‘localhost’))
channel = connection.channel()

创建一个队列(叫 order_queue)

channel.queue_declare(queue=‘order_queue’)

发送消息

message = “用户下单了,订单号:12345”
channel.basic_publish(exchange=‘’,
routing_key=‘order_queue’,
body=message)

print(“消息已发送”)
connection.close()

接收消息(消费者):

import pika

连接 RabbitMQ

connection = pika.BlockingConnection(pika.ConnectionParameters(‘localhost’))
channel = connection.channel()

声明队列(确保存在)

channel.queue_declare(queue=‘order_queue’)

处理消息的函数

def callback(ch, method, properties, body):
print(f"收到消息:{body.decode()}")
# 这里写你的业务逻辑,比如扣库存
print(“库存已扣减”)

监听队列

channel.basic_consume(queue=‘order_queue’,
auto_ack=True,
on_message_callback=callback)

print(“等待消息中…”)
channel.start_consuming()

就是这么简单!运行发送端,消息就进队列了;运行接收端,消息就被处理了。

四、Kafka 怎么玩?
Kafka 是个高吞吐量消息队列,就像高速公路一样,能同时跑很多车。它适合处理海量数据,比如日志收集、实时数据流。

核心概念(跟 RabbitMQ 不太一样)
●Topic(主题):消息的分类,比如订单主题、日志主题
●Partition(分区):每个主题可以分成多个分区,提高并发能力
●Producer(生产者):往 Topic 发消息
●Consumer(消费者):从 Topic 拿消息
●Consumer Group(消费者组):多个消费者组成一个组,共同消费一个 Topic

怎么安装
Kafka 依赖 Zookeeper(或者用自带的 KRaft 模式),安装稍微麻烦点:

●去 Kafka 官网下载压缩包
●解压后,先启动 Zookeeper(或者用 KRaft 模式跳过这步)
●再启动 Kafka

懒人方法:用 Docker 一键启动
docker run -d --name kafka
-p 9092:9092
apache/kafka:latest

怎么用(Python 示例)
先装个库:pip install kafka-python

发送消息(生产者):

from kafka import KafkaProducer

连接 Kafka

producer = KafkaProducer(bootstrap_servers=‘localhost:9092’)

发送消息到 order_topic 这个主题

message = “用户下单了,订单号:12345”
producer.send(‘order_topic’, message.encode())

print(“消息已发送”)
producer.close()

接收消息(消费者):

from kafka import KafkaConsumer

连接 Kafka,订阅 order_topic 主题

consumer = KafkaConsumer(‘order_topic’,
bootstrap_servers=‘localhost:9092’,
auto_offset_reset=‘earliest’)

监听消息

for message in consumer:
print(f"收到消息:{message.value.decode()}")
# 这里写你的业务逻辑
print(“库存已扣减”)

五、RabbitMQ 和 Kafka 怎么选?
这俩都是消息队列,但侧重点不同。我给你个简单的选择标准:

对比项 RabbitMQ Kafka
设计目标 易用、稳定 高吞吐、分布式
吞吐量 每秒万级 每秒百万级
消息回溯 不支持 支持(可以重新消费旧消息)
适用场景 业务消息、订单、通知 日志收集、实时数据流
学习曲线 平缓(新手友好) 陡峭(概念多)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询