kafka消费组管理模块(四)-GroupCoordinator分析

GroupCoordinator负责对接上层KafkaApis的各种handle请求,对下封装了GroupMetadataManager的各个方法

重点分析rebalance的两个阶段JoinRequest和SyncRequest

一.JoinRequest

1.最上层由KafkaApis的handleJoinGroupRequest方法发起
case ApiKeys.JOIN_GROUP => handleJoinGroupRequest(request)
def handleJoinGroupRequest(request: RequestChannel.Request): Unit = {
  val joinGroupRequest = request.body[JoinGroupRequest]

  // 封装返回结果
  def sendResponseCallback(joinResult: JoinGroupResult): Unit = {
    def createResponse(requestThrottleMs: Int): AbstractResponse = {
      val protocolName = if (request.context.apiVersion() >= 7)
        joinResult.protocolName.orNull
      else
        joinResult.protocolName.getOrElse(GroupCoordinator.NoProtocol)

      val responseBody = new JoinGroupResponse(
        new JoinGroupResponseData()
          .setThrottleTimeMs(requestThrottleMs)
          .setErrorCode(joinResult.error.code)
          .setGenerationId(joinResult.generationId)
          .setProtocolType(joinResult.protocolType.orNull)
          .setProtocolName(protocolName)
          .setLeader(joinResult.leaderId)
          .setMemberId(joinResult.memberId)
          .setMembers(joinResult.members.asJava)
      )

      trace("Sending join group response %s for correlation id %d to client %s."
        .format(responseBody, request.header.correlationId, request.header.clientId))
      response
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值