文章目录
一、核心概念
消息队列(Message Queue)是后端系统中解耦服务、削峰填谷、异步处理的核心基础设施。简单说:生产者把消息丢进队列,消费者从队列里取出来处理,两者不需要知道对方是谁、什么时候在线。
对前端开发者来说,最直观的类比是浏览器的事件循环 + 宏任务队列:setTimeout 注册一个回调,它不会立刻执行,而是进队列等 Event Loop 调度。消息队列就是把这个模式放大到跨服务、跨机器、跨语言的级别。
三个关键角色
-
Producer(生产者):发消息的一方 → 类比你在前端 dispatch 一个 action
-
Broker(消息代理):RabbitMQ / Kafka 本身,负责存和转发 → 类比 Event Loop / 任务队列
-
Consumer(消费者):收消息处理的一方 → 类比 reducer / 事件回调
两种常见模型:
-
队列模型(Queue):一条消息只会被一个消费者消费(RabbitMQ 默认)
-
发布 / 订阅模型(Pub/Sub):一条消息可以被多个消费者同时收到(Kafka / RabbitMQ 的 Exchange)
Go 代码示例
下面用 Go 标准库模拟一个最简单的"内存消息队列",帮助理解生产者-消费者模式。真实项目中我们会用 RabbitMQ 或 Kafka,但核心思想完全一致。
package main
import (
"fmt"
"sync"
"time"
)
func producer(ch chan<- string, wg *sync.WaitGroup) {
defer wg.Done()
for i := 1; i <= 5; i++ {
msg := fmt.Sprintf("消息-%d", i
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_58540586/article/details/165123862



