首页 > 其他分享 >rocketmq--如何做路由发现、注册、剔除的

rocketmq--如何做路由发现、注册、剔除的

时间:2024-01-23 11:24:37浏览次数:25  
标签:-- Broker 信息 rocketmq 注册 NameServer 路由 路由表

RocketMQ 的 NameServer 是一个轻量级的服务,负责维护关于 Broker 的路由信息和提供路由查询服务。以下是 NameServer 在 Broker 管理、路由发现、路由注册和路由剔除方面的工作机制:

  1. Broker 管理:

    • Broker 在启动时会向所有的 NameServer 发送注册请求,包含自己的地址、存储的队列信息等。
    • Broker 会每隔30秒向所有的 NameServer 发送心跳包,以证明自己是活跃的。心跳包中包含了当前Broker的状态信息及队列信息。
  2. 路由发现:

    • 生产者(Producer)或消费者(Consumer)在启动时会从配置的 NameServer 地址列表中选择一个 NameServer,并从中获取完整的路由信息。
    • 客户端会定期(默认是30秒)从 NameServer 更新路由信息,以获取最新的 Broker 数据。
  3. 路由注册:

    • 当 Broker 启动或重启时,它会向所有的 NameServer 发送注册请求,告知自己的存在以及当前的队列、Topic等信息。
    • NameServer 收到注册请求后,会更新内部的路由表,并将这些信息提供给后来查询的生产者和消费者。
  4. 路由剔除:

    • 如果 NameServer 长时间(默认是120秒)没有收到某个 Broker 的心跳,它会认为该 Broker 不可用,并从路由表中剔除该 Broker 的信息。
    • 当客户端请求的 Broker 已经不在 NameServer 的路由表中时,客户端会收到路由找不到的错误,需要重新从 NameServer 获取新的路由信息。

NameServer 之间不进行信息同步,它们各自维护一份独立的路由信息。因为 Broker 会向所有的 NameServer 发送心跳和注册信息,所以每个 NameServer 都有完整的路由信息。这种设计简化了 NameServer 的实现,减少了同步的复杂性,并提高了整个系统的可用性。

总的来说,NameServer 在 RocketMQ 中扮演了一个关键角色,它通过接收 Broker 的注册和心跳信息来维护最新的路由表,并根据客户端的请求提供路由查询服务。这样确保了消息能够正确地发送到 Broker 或者从 Broker 被消费。

标签:--,Broker,信息,rocketmq,注册,NameServer,路由,路由表
From: https://www.cnblogs.com/xylfjk/p/17981923

相关文章

  • 胡思乱想的厘清
    汇编语言和Linux是两个不同的概念,它们之间没有直接的比较和区别。汇编语言(AssemblyLanguage)是一种低级的编程语言,它使用与计算机硬件相近的指令集来进行编程。汇编语言的编写是直接对硬件进行操作,它使用机器语言指令来表示各种操作,例如数据传输、算术运算等。汇编语言是一种强大......
  • HALCON 杂记
    1.emphasize—Enhancecontrastoftheimage.  增强图像对比度emphasize(Image:ImageEmphasize:MaskWidth,MaskHeight,Factor:)  read_image(Image,'mreut')dev_display(Image)*手动划区域draw_region(Region,WindowHandle)reduce_domain(Image,Regio......
  • Crypto( 10 )
    龙卷风一打开文件,发现是brainfuck代码,使用在线执行网站运行即可得到flaghttp://bf.doleczek.pl/flag{e4bbef8bdf9743f8bf5b727a9f6332a8}base16根据题目提示应选用base16在线工具flag{Thisisbase16}仿射密码试着在网页上搜索仿射密码在线工具,结果还真有看完这个......
  • 人工智能与机器学习在工业质量检测中的融合发展
    人工智能与机器学习在工业质量检测中的融合发展随着科技的进步,人工智能和机器学习已经成为引领工业质量检测变革的重要力量。它们在工业领域的应用,不仅提高了检测的准确性和效率,也为企业带来了前所未有的发展机遇。一、机器学习在工业质量检测中的优势机器学习技术可以通过训练模......
  • 数据仓库基本概念
    什么是数据仓库?数据仓库,英文名称为DataWarehouse,数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策(DecisionMakingSupport)。——比尔·恩门(BillInmon)......
  • rocketmq--基础配置
    Springboot项目application.properties的基础配置server.port=8091#RocketMQNameServer地址rocketmq.name-server=公网IP:9876#生产者组名称rocketmq.producer.group=my-rocket-mq-grouprocketmq.producer.access-key=rocketmq2rocketmq.producer.secret-key=123456......
  • Layui select实现赋值和主动触发选择时间,及radio实现可取消
    Layuiselect赋值,并主动触发选择事件//Layuiselect赋值,并主动触发选择事件//Input:selectId:ID选择器,selectFilter:lay-filter名称,value:需要的赋值,text:显示文本值functionsetSelect(selectId,selectFilter,value,text){//赋值$(selectId).find("option[va......
  • CAN基础知识笔记
    CAN总线协议(ControllerAreaNetwork),控制器局域网总线,是德国BOSCH(博世)公司研发的一种串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN通讯是异步通讯,没有时钟信号线来保持信号接收同步,是半双工通信,无法同时发送与接收,在同一时刻,只能有一个节点......
  • Linux 中常用的基础命令
    byemanjusakafromhttps://www.emanjusaka.top/2024/01/linux-base-command彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。分类总结了Linux中的基础命令,可以收藏本文以后如果忘记了某些基础命令或者对某些命令不知道怎么用时,拿出本文快速查看各种命令的用法......
  • [SQLAlchemy] sqlAlchemy学习笔记(2): 在orm中使用select
    SELECT的作用select在sql中的作用是选中特定列并以表的形式返回,是必要的关键字;在sqlalchemy中,select()方法会返回一个Select对象,并根据这个对象引入其他方法,如where(),join(),order_by()等等fromsqlalchemyimportselectstmt=select(User).where(User.name==......