Java RocketMQ 路由注册与删除的实现
简介
RocketMQ路由注册与删除是通过Broker与NameServer的心跳功能实现的。Broker启动时向集群中所有的NameServer发送心跳语句,每隔30s向集群中所有NameServer发送心跳包,NameServer收到Broker心跳包时会更新brokerLiveTable中的lastUpdateTimestamp,然后NameServer每隔10s扫描brokerLiveTable,如果连续120s没有收到心跳包,NameServer将移除该Broker的路由信息。
路由信息
路由实现类是org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager
- topicQueueTable:Topic消息队列路由信息,消息发送时根据路由表进行负载均衡。
- brokerAddrTable:Broker基础信息,包含brokerName、所属集群名称、主备Broker地址。
- clusterAddrTable:Broker集群信息,存储集群中所有Broker名称。
- brokerLiveTable:Broker状态信息。NameServer每次收到心跳包会更新该信息。
- filterServerTable:Broker上的FilterServer列表,用于类模式消息过滤。
路由注册
路由注册过程描述如下:
Broker启动时会向所有NameServer注册路由,然后启动一个定时任务,每隔30s发送心跳包;
BrokerOuterAPI中的registerBrokerAll实际上是通过Netty客户端将注册路由的请求发往NameServer的Netty服务端;
NameServer的Netty服务端接受到请求后,交给DefaultRequestProcessor的processRequest处理,最后委托给了RouteInfoManager的registerBroker方法,填充或者更新路由信息。
路由删除
在NamesrvController的initialize启动了个定时任务每隔10s扫描brokerLiveTable,如果连续120s没有收到心跳包,NameServer将移除该Broker的路由信息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
java rocketmq--消息的产生(普通消息)
前言 与消息发送紧密相关的几行代码: 1. DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName"); 2. producer.start(); 3. Message msg = new Message(...) 4. SendResult sendResult = producer.send(msg); 5. producer.shutdown(); 那这几行代码执行时,背后都做了什么? 一. 首先
-
java RocketMQ快速入门基础知识
如何使用 1.引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.1.0-incubating</version> </dependency> 2.编写Producer DefaultMQProducer produce
-
Java RocketMQ 路由注册与删除的实现
简介 RocketMQ路由注册与删除是通过Broker与NameServer的心跳功能实现的.Broker启动时向集群中所有的NameServer发送心跳语句,每隔30s向集群中所有NameServer发送心跳包,NameServer收到Broker心跳包时会更新brokerLiveTable中的lastUpdateTimestamp,然后NameServer每隔10s扫描brokerLiveTable,如果连续120s没有收到心跳包,NameServer将移除该Broker的路由信息. 路由信
-
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
本文实例讲述了php+redis实现注册.删除.编辑.分页.登录.关注等功能.分享给大家供大家参考,具体如下: 主要界面 连接redis redis.php <?php //实例化 $redis = new Redis(); //连接服务器 $a=$redis->connect("localhost",6379); //var_dump($a); //授权 $redis->auth("107lab"); 注册界面 add.php <form
-
java实现简单注册选择所在城市
本文实例为大家分享了java实现简单注册选择所在城市的全部代码,供大家参考,具体内容如下 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi
-
java集合类arraylist循环中删除特定元素的方法
在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常: Exception in thread "main" java.lang.I
-
Java FTP上传下载删除功能实例代码
在没给大家上完整代码之前先给大家说下注意点: FTP上传下载,容易出现乱码,记得转换 package com.yinhai.team.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; impo
-
JAVA 添加、修改和删除PDF书签的示例代码
当阅读篇幅较长的PDF文档时,为方便我们再次阅读时快速定位到上一次的阅读位置,可以插入一个书签进行标记:此外,对于文档中已有的书签,我们也可以根据需要进行修改或者删除等操作.本篇文章将通过Java编程来展示如何添加.修改以及删除PDF书签. 工具使用: •Free Spire.Pdf for Java 2.4.4 (免费版) •IntelliJ IDEA Jar包导入: 方式一:首先,从官网获取Free Spire.PDF for Java之后解压,以下是三种在IDEA中快速打开Project
-
JAVA中数组插入与删除指定元素的实例代码
今天学了Java的数组,写了数组的插入和删除,本人小白,写给不会的小白看,大神请忽略,有错请大家指出来: /** 给数组指定位置数组的插入 */ import java.util.*; public class ArrayInsert{ public static void main(String []args){ System.out.println("请用键盘输入5个数:"); int [] array =new int[10]; Scanner sc=new Scanner(Sy
-
Java list利用遍历进行删除操作3种方法解析
这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java三种遍历如何进行list的便利删除: 1.for循环: 常见初五写法:(由于下标问题达不到想要效果) for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); } 应该改为:(倒序操作避免下标问题) int s
-
Java如何使用Iterator迭代器删除集合重复选项
这篇文章主要介绍了Java如何使用Iterator迭代器删除集合重复选项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 结合迭代器Iterator删除集合中重复的选项,这种方法有一个缺点就是最终的结果不一定是有序的. public class test { public static void main(String[] args) { // 创建一个集合 ArrayList list = new ArrayList<>(); // 往集合中
-
Java 添加、替换、删除PDF中的图片的示例代码
概述 本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片.另外,关于图片的操作还可参考设置PDF 图片背景.设置PDF图片水印.读取PDF中的图片.将PDF保存为图片等文章. 工具:Free Spire.PDF for Java (免费版) Jar获取及导入:官网下载,并解压将lib文件夹下的jar文件导入java程序,或者通过maven仓库下载并导入. jar导入效果: Java代码示例 [示例1]添加图片到PDF import com.spire.pdf.*; i
随机推荐
- 当菜鸟遇上黒客之二:端口扫描
- redis哈希和集合_动力节点Java学院整理
- AngularJS基础 ng-copy 指令实例代码
- MySQL数据库事务隔离级别介绍(Transaction Isolation Level)
- ES6新特性二:Iterator(遍历器)和for-of循环详解
- asp.net中文件下载功能的实例代码
- phpMyAdmin链接MySql错误 个人解决方案
- Python图像灰度变换及图像数组操作
- jsp中Action使用session方法实例分析
- c语言B树深入理解
- Android省市区三级联动控件使用方法实例讲解
- MySQL查询优化的5个实用技巧
- Ajax 框架学习笔记
- jQuery中$.each()函数的用法引申实例
- node.js开机自启动脚本文件
- 实例讲解Python设计模式编程之工厂方法模式的使用
- 浅谈C#中Md5和Sha1两种加密方式
- C# listview 点击列头排序的实例
- 轻松掌握python设计模式之访问者模式
- Android 复制文本内容到系统剪贴板的最简单实例(分享)