C语言连接rocketmq,RocketMq之Producer原理浅析

本文介绍了RocketMQ中Producer的工作原理,包括MessageQueue的概念、连接NameServer的过程、心跳机制、与Broker的连接、容错机制和负载均衡策略。当NameServer宕机,Producer会依赖本地缓存;Broker宕机时,Producer可通过重试和容错机制避免消息发送失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生产者是怎么发消息的?

MessageQueue

首先在理解生产者发消息之前,必须要明白一个概念:MessageQueue是什么?

其实MessageQueue是RocketMq的一种数据分片+物理存储机制。

23dee5aa732f9743b728dd727d3ada7e.png

我们一般在创建 Topic 的时候会指定 MessageQueue 的数量。

如上图,一个 Topic 中有4个 MessageQueue,每个 Brokers 上有2个 MessageQueue ,生产者通过算法(默认是均匀分配)来把消息写入不同的 MessageQueue 中。MessageQueue 的数据可以持久化在磁盘上。

这样就把消息分散到了多个 Broker 上,大大提升 Broker 的抗并发能力!

Producer连接NameSever

Producer 通过 NameSever 获取指定 Topic 的 Broker 路由信息,并在本地保存一份缓存数据,比如一个Topic有哪些 MessageQueue,MessageQueue 在哪几台 Broker 上,Broker 的ip.port等等。

Producer 发送消息只发到 Master Broker上,Slave 通过 主从同步获取数据。

那么 Produce 是怎么链接 NameSever 的呢?

连接

单个生产者者和一台 Nameserver 保持长连接,定时查询t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值