当前位置: 首页 > article >正文

RocketMQ - 发送消息时Producer是如何选择MessageQueue去发送的?

Producer发送消息的时候,其实会先检查一下要发送消息的Topic的路由数据是否在本地缓存,如果不在的话,就会通过底层的Netty网络通信模块去发送一个请求到NameServer去拉取Topic路由数据,然后缓存在Producer的本地。那么当Producer拿到了一个Topic的路由数据之后,其实接下来就应该选择要发送消息到这个Topic的哪一个MessageQueue上去了!

因为大家都知道,Topic是一个逻辑上的概念,一个Topic的数据往往是分布式存储在多台Broker机器上的,因此Topic本质是由多个MessageQueue组成的。

每个MessageQueue都可以在不同的Broker机器上,当然也可能一个Topic的多个MessageQueue在一个Broker机器上,如下图所示。
在这里插入图片描述
只要你知道了要发送消息到哪个MessageQueue上去,然后就知道这个MessageQueue在哪台Broker机器上,接着就跟那台Broker机器建立连接,发送消息给他就可以了。

之前介绍过,发送消息的核心源码是在DefaultMQProducerImpl.sendDefaultImpl()方法中的,在这个方法里,只要你获取到了Topic的路由数据,不管从本地缓存获取的,还是从NameServer拉取到的,接着就会执行下面的核心代码。

MessageQueue mqSelected =

http://www.kler.cn/a/272600.html

相关文章:

  • 解决 MySQL 服务无法启动:failed to restart mysql.service unit not found
  • 【实践】操作系统智能助手OS Copilot新功能测评
  • 【机器学习:三十二、强化学习:理论与应用】
  • MySQL(高级特性篇) 06 章——索引的数据结构
  • 电脑风扇声音大怎么办? 原因及解决方法
  • el-timeline时间线(Plus)左边图标改为自定义图片
  • 画图实战-Python实现某产品全年销量数据多种样式可视化
  • mac下Appuim环境安装
  • 【设计模式】Java 设计模式之工厂模式(Factory Pattern)
  • 就业班 2401--3.13 走进网络
  • Trustzone和Tee的基本概念区分
  • C语言文件操作 w模式
  • 【计算机网络篇】物理层(2)传输方式
  • 贪心算法(算法竞赛、蓝桥杯)--线段覆盖
  • #LLM入门|Prompt#3.3_存储_Memory
  • 生成器建造者模式(Builder)——创建型模式
  • QT 如何防止 QTextEdit 自动滚动到最下方
  • modbus客户端
  • Tensorflow笔记(二):激活函数、优化器等、神经网络模型实现(商品销量预测)
  • C/C++程序设计实验报告3 | 数组实验
  • FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS多路视频融合叠加,提供1套工程源码和技术支持
  • 配置LVS NAT模式
  • 单据分页的实现
  • 机试:高精度乘法
  • 【数据库】数据库基本知识
  • Vue3项目部署安装