RocketMQ动态增加NameServer

news/2024/11/24 19:34:00/

前言

通过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.ppmy.cn/news/28725.html

相关文章

力扣-合作过至少三次的演员和导演

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1050. 合作过至少三次的演员和导演二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运…

Vue项目中components组件的使用笔记

目录 前言 一、components和component的区别? 二、components使用的步骤 1.创建组件vue文件 2.引入组件 3.注册组件 4.应用组件 总结 前言 本文章,只是初步了解记录components的使用步骤。 一、components和component的区别? compo…

MySQl总结

文章目录MySQL数据库的常见考点1、ACID事务原理事务持久性事务原子性MVCC基本概念MVCC基本原理undo logundo log版本链readviewMVCC实现原理RC读已提交RR可重复读MVCC实现原理总结2、并发事务引发的问题3、事务隔离级别4、索引索引结构BTreeHash面试题索引分类思考题语法性能分…

Spring中常用注解

声明 bean 的注解 Component:泛指各种组件 Controller、Service、Repository 都可以称为Component Controller:控制层 Service:业务层 Repository:数据访问层Bean 的生命周期属性 Scope 设置类型包括:设置 Spring 容器…

3 决策树及Python实现

1 主要思想 1.1 数据 1.2 训练和使用模型 训练:建立模型(树) 测试:使用模型(树) Weka演示ID3(终端用户模式) 双击weka.jar选择Explorer载入weather.arff选择trees–>ID3构建树…

JAVA开发(JAVA垃圾回收的几种常见算法)

JAVA GC 是JAVA虚拟机中的一个系统或者说是一个服务,专门是用于内存回收,交还给虚拟机的功能。 JAVA语言相对其他语言除了跨平台性,还有一个最重要的功能是JAVA语言封装了对内存的自动回收。俗称垃圾回收器。所以有时候我们不得不承认&#…

【ElasticSearch系列-01】初识以及安装elasticSearch

elasticSearch入门和安装一,elasticSearch入门1,什么是elasticSearch2,elasticSearch的底层优点2.1,全文检索2.2,倒排索引2.2.1,正排索引2.2.2,倒排索引2.2.3,倒排索引解决的问题2.2…

mysql数据库常见面试题

慢查询排查优化 排查 slow_query_log设置为on,就会记录慢查询sql;long_query_time可以设置慢查询sql的阈值时间;slow_query_log_file表示记录慢查询sql的日志路径。即我们可以通过打开记录慢查询的开关,设置慢查询的时间阈值&…