@PHARAOH头像
关注

WHAT - 消息队列入门(RabbitMQ / Kafka + Go)

一、核心概念

消息队列(Message Queue)是后端系统中解耦服务、削峰填谷、异步处理的核心基础设施。简单说:生产者把消息丢进队列,消费者从队列里取出来处理,两者不需要知道对方是谁、什么时候在线。

对前端开发者来说,最直观的类比是浏览器的事件循环 + 宏任务队列:setTimeout 注册一个回调,它不会立刻执行,而是进队列等 Event Loop 调度。消息队列就是把这个模式放大到跨服务跨机器跨语言的级别。

三个关键角色

  1. Producer(生产者):发消息的一方 → 类比你在前端 dispatch 一个 action

  2. Broker(消息代理):RabbitMQ / Kafka 本身,负责存和转发 → 类比 Event Loop / 任务队列

  3. Consumer(消费者):收消息处理的一方 → 类比 reducer / 事件回调

两种常见模型:

  1. 队列模型(Queue):一条消息只会被一个消费者消费(RabbitMQ 默认)

  2. 发布 / 订阅模型(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

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--