消费者离开消费者组是向GroupCoordinator发送LeaveGroupRequest。

  def handleLeaveGroup(groupId: String, consumerId: String, responseCallback: Short => Unit) {if (!isActive.get) {responseCallback(Errors.GROUP_COORDINATOR_NOT_AVAILABLE.code)} else if (!isCoordinatorForGroup(groupId)) {responseCallback(Errors.NOT_COORDINATOR_FOR_GROUP.code)} else if (isCoordinatorLoadingInProgress(groupId)) {responseCallback(Errors.GROUP_LOAD_IN_PROGRESS.code)} else {val group = groupManager.getGroup(groupId)if (group == null) {// if the group is marked as dead, it means some other thread has just removed the group// from the coordinator metadata; this is likely that the group has migrated to some other// coordinator OR the group is in a transient unstable phase. Let the consumer to retry// joining without specified consumer id,responseCallback(Errors.UNKNOWN_MEMBER_ID.code)} else {group synchronized {if (group.is(Dead)) {//如果遇到Group处于Dead、未知的memberID,就调用回调函数返回错误码responseCallback(Errors.UNKNOWN_MEMBER_ID.code)} else if (!group.has(consumerId)) {responseCallback(Errors.UNKNOWN_MEMBER_ID.code)} else {val member = group.get(consumerId)removeHeartbeatForLeavingMember(group, member)// 移除memberMetadata对象并完成状态转化onMemberFailure(group, member)responseCallback(Errors.NONE.code)}}}}}
  private def onMemberFailure(group: GroupMetadata, member: MemberMetadata) {trace("Member %s in group %s has failed".format(member.memberId, group.groupId))group.remove(member.memberId)group.currentState match {case Dead =>case Stable | AwaitingSync => maybePrepareRebalance(group)case PreparingRebalance => joinPurgatory.checkAndComplete(GroupKey(group.groupId))}}

Kafka GroupCoordinator机制(十六):GroupCoordinator之LeaveGroupRequest分析相关推荐

  1. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  2. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  3. 【python数据挖掘课程】十六.逻辑回归LogisticRegression分析鸢尾花数据

    今天是教师节,容我先感叹下. 祝天下所有老师教师节快乐,这是自己的第二个教师节,这一年来,无限感慨,有给一个人的指导,有给十几个人讲毕设,有几十人的实验,有上百人的课堂,也有给上千人的Python网络 ...

  4. 斗地主AI算法——第十六章の样例分析

    上一章,我们已经完成了测试模块的开发.至此我们已经可以进行整体测试了.本章主要内容就是对随机生成的对局情况进行简单的分析. 实际上整个开发过程绝大部分时间都是用在样例分析上,通过样例给出的返回操作分析 ...

  5. [系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及蠕虫解析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  6. [系统安全] 四十六.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. QT开发(六十六)——登录对话框的验证机制

    QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...

  8. Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制

    在<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>中,我介绍了获取AccessToken(通用接口)的方法. 在实际的开发过程中,所有的高级接口都需 ...

  9. 6张图阐述Kafka心跳机制(时间轮算法的具体运用)

    Broker端与客户端的心跳在Kafka中非常的重要,因为一旦在一个心跳过期周期内(默认10s),Broker端的消费组组协调器(GroupCoordinator)会把消费者从消费组中移除,从而触发重 ...

最新文章

  1. 结合丰富示例深入讲解Ajax架构和最佳实践——《深入Ajax:架构与最佳实践》
  2. Windows Mobile下访问Sqlite的Native C++封装
  3. boost::core模块实现分配const void指针
  4. C#-修改图书借阅管理系统-错误与SQL server 2008错误、复制数据库
  5. 【网络流24题】【LOJ6000】搭配飞行员(二分图最大匹配,最大流Dinic)
  6. Thingsboard 3.1.0 - 规则链:外部结点REST API
  7. ubuntu20.04安装谷歌拼音输入法
  8. 【数据库】MS SQL SERVER数据库日志压缩方法
  9. 微信小程序云数据库使用讲解
  10. 分位数回归及Stata实现
  11. 降维打击(序列化)的流行手段
  12. 小程序获取用户信息相关 获取头像名称 微信用户
  13. Java通过substring截取指定字符
  14. 【纯净版windows系统】U盘启动制作图文教程
  15. nodejs 实现 redis 的消息发布及订阅
  16. Baxter学习笔记1-机器人软硬件配置篇
  17. 移动游戏运营数据分析指标:用户获取,用户活跃,用户生命周期
  18. 【初级web前端工程师】2020年工作总结PPT
  19. 小明在用计算机计算460,四年级下学期数学期末试卷
  20. 考初级会计的报名条件是什么?

热门文章

  1. 小而美的LBS应用龙门阵——成都开发者沙龙
  2. DB2 SQL语句归纳整理(一)
  3. LHS 查询和 RHS 查询
  4. 使用python计算复利
  5. ROM,PROM,EPROM,EEPROM及FLASH存储器的区别
  6. 【网商课堂】木帛的杭派女装线上开拓心得
  7. ABAP中SELECTION-SCREEN用法
  8. 计算机休眠查询,可不可以查询电脑待机记录
  9. 论“学而不思则罔,思而不学则殆.“
  10. Zhong__Linux系统安装MongoDB数据库