00:00
好,接下来呢,我们就来看一下消费者和消费者主初始化做了哪些事儿啊,其实呢,这里主要的就是这个消费者主初始化,那他初始化哎,最主要的目标呢,就是找对应的这个coordinator,比如说跟这个COD建立连接,然后呢,同时申请加入到对应的这个消费者组啊,干这么一件事啊。那行,那我们先看看啊。点击进去,进去之后首先是coordinator,如果说它不等于空啊,那也说有这个coordinator,其实呢,就是你是一个消费者主,那么后面继续判断说qua.po哎,那其实呢,这个后面啊进行的操作呢,就是哎等待加入到对应的这个消费者组里面去啊,那看看他怎么加入到这个消费者组的pro。那进来之后这里面找谁呢?哎,首先往下正常往程序往下走呗,这个subscription啊,它呢是订阅对吧,订阅主题,订阅主题说has out to assign partition啊,自动的一个分配分区,那这个等不等于true呢,进去看看呗。
01:03
进去看之后你发现啊,这个订阅的这个类型,如果你是这个它是auto topics在前面我们说啊提到过,哎,我们自动传进来类型是不是就是auto凸这个topic斯啊,那它就是处呗,对吧,这是获得关系啊,任何一个满足那都返回处,那如果你返回处的话,那它要往下走,往下走,那这里面有一个协议,说协议如果等于空的话啊,也就直接就要跑异常了啊其实呢,就是这个分区分配策略这个值,如果你没有进行一个定义的话,那这块直接跑异常了啊,那写一下吧。如果没有指定。分区。分配。策略啊直接。好异常啊这块进行处理,那那这块呢,如果这个消费者分区分策略已经定义好了之后,那下面这块的操作。三秒心跳。哎,心跳那是哪一个呢,是这个。
02:01
这个地方也就说这个消费者跟这个狂dator如果建立连接之后,就可以发送这个心跳帧,那默认是三秒,那现在呢,其实你还没有不一定能够找到这个关点,那这个发送有可能是失败的啊,那没关系,一旦找到之后,那这个心跳就可以正常作了啊往下找,那继续下面这块呢说啊in硕coordinator ready。现在这一块呢,就是判断你这个是否准备好了。这块呢,是。判断coordinator是否准备好了?那他是否准备好了呢?那我们来看一下进去。间接之后呢,哎找谁呢,往下看啊,往下看这块儿。这一块呢,它是一个do well循环,在这个循环里面说啊,这个COD如果是按no状态,比如说没有找到,那就一直在循环啊,那这是一个超时时间判断啊,没有超时啊,而且这个宽没有找到,那就在这里面一直找,那核心找这个宽的方法就是它。
03:04
就这块儿。叫创建。一个查找coordinator的请求,你看它返回的是一个啊请求信息啊。来,进去看他怎么查找的。那进来之后呢,这里面那客户端点latest loaded note啊,其实就找最近的这一个节点啊,有什么意思呢,你看这里啊。你这是这个消费者,那他要跟诶这个博科节点进行通讯,哎,通讯干什么事儿,跟他通讯,告诉他说你告诉我哪一个是我要进行访问的coordinator啊,是获取这个coordinator啊,所以说呢,这里面它就是啊寻找可以能够正常啊获取到的节点,那如果获取的这个节点啊,等于空于宙没有找到,没有找到之后说no broke available to send这个啊,Find content request,比如说没有节点能够接收我这个请求,那下面这个呢,诶下面这个就是有节点接收。
04:05
接收。查找请求。啊,有,那有的话呢,它就会发送叫send find request进来。那在这里面他干了什么事呢?首先他创建了一个find coordinator request date。创建发送cdator请求数据信息,哎,在这里面,哎创建这么一个对象,那这个对象的数据给谁呢?哎,给这个find coordinator request也说进一步的封装。这个封装,封装完毕之后由这个client,那这个client是谁呀。这就是他。叫consumer network client,通过它呢,把数据发送到对应的。发送到对应的这个服务端啊好。那通过它一发送就可以了哈,那行,那下面我们再往回走,那发送过去之后。
05:06
这地方你这边呢,是创建完请求并发送。对吧。那你客户端把数据发送到服务端之后,那你是不是得获取对应的结果呀,那怎么获取结果呢?那这里面有一个这个C点,就是这个是拉取。获取。服务端。返回。的结果啊,比如说这块呢,是获取结果数据是否能够加入到这个宽,那找到这个宽,其实也就是找到了对应的这个消费者主哈,那行那返回来。烦,最烦。那放到这儿继续啊,返回。那这块呢,就是判断这个coordinator是否准备好啊,其实呢,这个呢,就是整个这个,呃,它初始化的一个过程就是查找这个coordinator啊。
我来说两句