RocketMQ动态增加NameServer

news2025/1/13 17:45:41

前言

通过HTTP服务来设置NameServer地址,是唯一支持动态增加NameServer的方式,无需重启其它组件
网上搜了下没看到有兄弟们演示这块,所以刚才自己试了试,做个笔记
本文有详细的演示过程

都知道NameServer有4种配置方式,这里就不做赘述了

正文

  1. 看源码 MixAll 类

确实是通过 rocketmq.namesrv.domain 和 rocketmq.namesrv.domain.subgroup 来完成的HTTP服务接口的配置的(将变量设置到 VM OPTION 里就可以了),并且支持自定义端口

public static String getWSAddr() {
        String wsDomainName = System.getProperty("rocketmq.namesrv.domain", DEFAULT_NAMESRV_ADDR_LOOKUP);
        String wsDomainSubgroup = System.getProperty("rocketmq.namesrv.domain.subgroup", "nsaddr");
        String wsAddr = "http://" + wsDomainName + ":8080/rocketmq/" + wsDomainSubgroup;
        if (wsDomainName.indexOf(":") > 0) {
            wsAddr = "http://" + wsDomainName + "/rocketmq/" + wsDomainSubgroup;
        }
        return wsAddr;
    }
  1. 给producer和consumer添加配置
-Drocketmq.namesrv.domain=127.0.0.1:18888 -Drocketmq.namesrv.domain.subgroup=dynamicNameServerAddress

在这里插入图片描述
3. 添加一个用于返回NameServer地址的HTTP接口
在这里插入图片描述

  1. 先看看启动producer的效果
    4.1 先启动一个 NameServer
    看到下面这句(The Name Server boot success. serializeType=JSON),就是启动成功了。
    在这里插入图片描述

我这里只是下载了github最新的rocketmq源码进行启动而已,不要在意这些细节,本地已有服务的,可以直接用。(不用本地启动NameServer和Broker)

4.2 启动 Broker
没报错就是OK
在这里插入图片描述
4.3 启动 Produber

我这里直接用的源码中的example
直接使用 org.apache.rocketmq.example.quickstart.Producer 启动就好了
因为NameServer是HTTP服务动态返回的(每2分钟刷新一次),所以需要屏蔽掉代码 producer.setNamesrvAddr

这里加了个断点,可以看看效果
在这里插入图片描述
在这里插入图片描述
消息生产结束
在这里插入图片描述
4.4 启动 Consumer
正常消费完成
在这里插入图片描述
感觉自己还是演示得很到位了,觉得有帮助的同学点个赞吧,(。-ω-)zzz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

simulink入门指南

系列文章目录 文章目录系列文章目录常用操作技巧项目练习 - 动态系统二阶系统建模比例积分控制燕子俯冲系统建模滤波位操作总结常用操作技巧 画面缩放 空格键 鼠标左键: 拖拽空格键: fit屏幕 信号操作 双击signal可添加标签, 鼠标右键拖拽可给信号添加分支同一分支上的sig…

【并发基础】线程,进程,协程的详细解释

目录 一、什么是进程和线程 1.1 进程是什么呢? 1.2 线程又是什么呢? 1.3 线程和进程之间的关系 操作系统、进程、线程之间的关系图: 进程与线程的模型图: 下面来思考这样一个问题:为什么程序计数器、虚拟机栈和本地方法…

QNX7.1 交叉编译开源库

1.下载QNX7.1 SDK并解压 ITL:~/work/tiqnx710$ ls -l 总用量 16 drwxrwxr-x 4 xxx4096 1月 28 13:38 host -rwxrwxr-x 1 xxx 972 1月 28 13:38 qnxsdp-env.bat -rwxrwxr-x 1 xxx 1676 1月 28 13:38 qnxsdp-env.sh drwxrwxr-x 3 xxx 4096 1月 28 13:38 target xxxITL:~/work/ti…

NetApp SnapCenter 备份管理 ——借助应用程序一致的数据备份管理,简化混合云操作

NetApp SnapCenter 简单、可扩展、赋权:跨 Data Fabric 的企业级数据保护和克隆管理 主要优势 • 利用与应用程序集成的工作流和预定义策略简化备份、恢复和克隆管理。 • 借助基于存储的数据管理功能提高性能和可用性,并缩短测试和开发用时。 • 提供基…

干货 | 浅谈机器人强化学习--从仿真到真机迁移

“对于机器人的运动控制,强化学习是广受关注的方法。本期技术干货,我们邀请到了小米工程师——刘天林,为大家介绍机器人(以足式机器人为主)强化学习中的sim-to-real问题及一些主流方法。”一、前言设计并制造可以灵活运…

【靶机】vulnhub靶机cybox1

Vulnhub靶机Cybox下载地址 Cybox: 1.1 ~ VulnHub 信息搜集 首先进行靶机ip的发现。 sudo arp-scan -l 接着使用nmap扫描开放的端口,这里使用扫描全部端口和详细信息太慢了,分开检测 命令:nmap -p 21,25,80,110,143,443 -sV -A 192.168.174…

CentOS救援模式(Rescue Mode)及紧急模式(Emergency Mode)

当CentOS操作系统崩溃,无法正常启动时,可以通过救援模式或者紧急模式进行系统登录。启动CentOS, 当出现下面界面时,按e进入编辑界面。在编辑界面里,加入参数:systemd.unitrescue.target ,然后Ctrl-X启动进入…

Linux服务器上传文件到阿里云oss对象存储的两种方法ossutil、curl

ossutil支持在Windows、Linux、macOS等系统中运行,您可以根据实际环境下载和安装合适的版本。安装过程中,需要使用解压工具(unzip、7z)解压软件包,请提前安装其中的一个解压工具。yum -y install unzipLinux系统一键安…

正点原子第一期

ZYNQ是一个fpga用来硬件编程,外加一个软件编程 FPGA是可通过编程来修改其逻辑功能的数字集成电路 第三篇语法篇 第七章 verilog HDL语法 Verilog的简介 可编程逻辑电路:允许用户自行修改内部连接的集成电路,其内部的电路结构可以通过编程数…

ADAS-CIS相机关键参数综述

引言 “ CIS传感器关键参数是工程师选型参考的依据,抛开镜头,本文介绍CIS可见光传感器关键参数之CRA、QE、CFA、Shutter、SNR等。” 关键参数 CRA CFA(Chief Ray Angle)主光角,在上一篇可见光相机的介绍中我们介绍了Sensor的叠层结构&am…

leecode+剑指offer

1.算法入门14天 1.704二分查找: 题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 思路…

Matlab进阶绘图第3期—方块热图

方块热图是一种特殊的热图(Heatmap)。 与传统热图相比,方块热图通过不同颜色、不同大小的正方形以表示数据/特征的大小,能够更加直观地对数据分布情况进行分析,也因此可以在一些顶级期刊中看到它的身影,比…

数据库设计三大范式

数据库设计遵循三大范式的理由:在面对复杂是数据库设计的时候,设计数据库要遵循一定的规则,有了一定的规范,这样就可以是自己看起来舒服。 1.第一范式(确保每列保持原子性) 第一范式主要是保证数据表中的每一个字段的…

Java缓存面试题——Redis解决方案

文章目录1、什么是缓存击穿?该如何解决2、什么是缓存穿透?该如何解决3、什么是缓存雪崩?该如何解决4、什么是BigKey?该如何解决bigkey的危害发现bigkey解决bigkey5、redis过期策略都有哪些?6、讲一讲Redis缓存的数据一…

FL Studio 21 中文正式版发布支持多种超个性化主题

万众期待的 FL Studio 21 版本正式发布上线,目前在紧锣密鼓的安排上线中,届时所有购买正版 FL Studio 的用户,都可以免费升级到21版! 按照惯例,本次新版也会增加全新插件,来帮助大家更好地创作。今天先给大…

利用 NVIDIATAO 和 WeightBias 加速AI开发

利用 NVIDIATAO 和 Weight&Bias 加速AI开发 利用图像分类、对象检测、自动语音识别 (ASR) 和其他形式的 AI 可以推动公司和商业部门内部的大规模转型。 然而,从头开始构建人工智能和深度学习模型是一项艰巨的任务。 构建这些模型的一个共同先决条件是拥有大量高…

Java枚举详解

一.枚举 1.为什么有枚举? 如果我们的程序需要表示固定的几个值: 比如季节:spring (春),summer(夏),autumn(秋),winter(冬) 用常量表示: public static final int SEASON_SPRING 1;public st…

机械键盘不只有轴体的区别!键帽高度也有些学问

键盘键帽的学问有很多,上篇文章中,笔者和大家聊了键帽的材质和耐油污的问题。 除此之外,键帽的高度和字符的印刷方式也有不同,对于多数机械键盘来说,会发现每一列键帽的倾斜角度都略有不同,使用起来可以减少…

vue在history模式下打包部署问题解决

引言 项目使用的模板是element-template,由于业务需要,我将路由的hash模式更改为了history模式,然后在打包部署项目时就出现了问题 个人发现是资源的访问路径有问题,在部署之后发现每次访问的js资源路径前都会自动携带上我路由的…

如何使用SpringBoot ⽇志?

Spring Boot自定义日志的打印:在一个类中先获取到打印日志对象(日志框架提供的日志对象,而日志框架默认已经集成到Spring Boot里了,springboot默认使用 slf4jlogback);注意:得到日志对象Logger ->来自于slf4j2、使用目志对象提…