Kafka架构 - ConsumerNetworkClient

前言

本文对Kafka的ConsumerNetworkClient的poll(…)方法,展开源码分析。实际上这个方法负责客户端与服务端的之间的读写操作。

ConsumerNetworkClient -> NetworkClient -> Selector,归根结底由Selector做底层的I/O操作。

源码分析

在这里插入图片描述

Part One

在这里插入图片描述

触发监听器的回调逻辑。

在这里插入图片描述

在这里插入图片描述

  • pendingCompletion:ConcurrentLinkedQueue类型。请求完成的,会被加入到这个队列中。

在这里插入图片描述

  • response:ClientResponse类型。
  • future:RequestFuture类型。
  • e:RuntimeException类型。

对于正常完成的情况,会调用future.complete(response)这个方法。

在这里插入图片描述

result属性设置为请求对应的response。然后调用fireSuccess()方法。

在这里插入图片描述

从RequestFutureListener队列中取出元素,分别触发onSuccess(…)逻辑。

·

Part Two

在这里插入图片描述

对于准备下线的服务端节点,断开与之连接的客户端。

在这里插入图片描述

在这里插入图片描述

  • pendingDisconnects:ConcurrentLinkedQueue类型。

在这里插入图片描述

获取该节点未发送的请求集合,对这些请求做失败处理。

在这里插入图片描述

将该RequestFutureCompletionHandler添加到pendingCompletion这个集合中。

·

Part Three

在这里插入图片描述

在这里插入图片描述

对于与服务端成功建立连接的客户端,进行发送请求。底层使用NetworkClient,之后的文章会有分析。

·

Part Four

在这里插入图片描述

调用NetworkClient#poll(…)方法。也就是实际的读写操作。

·

Part Five

在这里插入图片描述

检查断开连接的服务端节点。

在这里插入图片描述

对于断开连接的服务端节点,清空未发送的请求集合,触发onComplete(…)回调逻辑。

·

Part Six

在这里插入图片描述

可能触发唤醒、抛出中断异常。

在这里插入图片描述

可能触发唤醒。

在这里插入图片描述

可能抛出中断异常。

·

Part Seven

在这里插入图片描述

客户端向服务端发送请求,对失效的请求做失败处理,清空未发送的请求集合。

在这里插入图片描述

对失效的请求做失败处理。

·

Part Eight

在这里插入图片描述

触发监听器的回调逻辑。可能会抛出异常。

在这里插入图片描述

可能会抛出异常。

在这里插入图片描述

在这里插入图片描述

清除错误,可能会抛出异常。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值