00:00
好,那接下来我们来看一个点,就是说这个东西啊,有时候面试过程当中,他会问你一个问题,就是说。这个数据啊,你看啊,我们现在起的这个消费者代码里边起的消费者是不是同样的跟控制台一样,就是跟写的那个代码不加杠杠PK一样。对吧,从最大的开始消费,因为我们现在force里边,我现在一启动fo里边是不是有数据啊。肯定有数据吧,但是他把以前的数据打印出来了。没有吧,也就是说它默认从最大的那在控制台里面加一个杠杠from beginning它就可以了。对吧,加一个刚刚就可以了,那既然你加了刚刚for beginning实际上应该在我们。配置文件里边应该有一个相应的配置吧,对吧,因为我们之前说过,你在命令行里面做的任何操作。代码里面都能做对吧?好,那我们来看一下,找一下那个配置,那个配置叫什么东西呢?来点进来是不是在这里面找。
01:03
啊,那个东西叫。凹凸上线。哎,AA没行。嗯,这样直接搜啊,它中间应该有个off啊,中间有个off,就这个叫。自动的一个什么。重置为CE重置嘛,啊重置OK,那这个里边呢,来看一下,点它这个属性,这个属性不是说你写上它就一定会生效啊,它有两个特定场景才会生效,来看一下。干什么事的,对吧,当。或者。两个东西对吧,两个条件下这个属性才会生效,其他的不会生效,来看一下第一个。
02:01
说没有,在卡普卡当中没有初始化的。那这个offet,你说一下这是谁赛?这是消费者的一个配置信息,那指的是消费者没有初始化的一个,那这个是什么意思。当前这个消费者第一次消费了,而且我们所说的叫消费者第一次消费,其实应该是谁啊。消费者组第一次消费对不对,因为当前消费者是不是拿着组去消费的,对吧,当前这个消费者组第一次,也就是说你新换的一个组名。你换了一个新的组。对吧,在这种情况下,这个属性会生效。会生效好第二个。第二个,他说如果当前的opposite outside已经不存在了,在任何的一台机器上都不存在了,那这个是什么?会发生什么,什么时候会发生这种情况呢?就是说它已经初始化了,但是你的off已经在任何的机器上面不存在了。
03:09
他举了个例子,说由于什么数据已经被删除了,哎,这个情况大家来理解一下,就是我之前老早的时候开了一个消费者已经消费到十了,因为当时情况下你只有十条数据,是不是消费到十了,此时消费者挂掉了。过了七天了啊,过了八天吧,过了八天了,他说默认保存七天啊,那七天点的数据是不是应该把它删掉。对吧,今天年的数据删掉,那前十条是不是很有可能在七天年里边。对吧,好,那这个时候你又把到第八天的时候,你又把当前的这个消费者给他启动起来了,好,那这个消费者他一看我是原来的组里的,我有初始化的值,他是不是又拿着这个十准备去消费啊,但是不好意思,我其实里边已经是什么了,最小的都是1000了,前999条我都给他干什么。
04:01
都删掉是不是有这种可能性啊,那你还能消费到吗?消费不到那这个属性就会生效,这两种情况下会生效,能听懂啊,第一个呢,是你换了一个组会生效,第二个呢。是我们所说的你之前总是消费过,但是你消费的这个奥赛不好意思在基金当中已经不存在了,最常见的一种情况就是过了七天,这个数据已经没什么被删掉了,默认是七天,那公司我可一天吗?对吧,我被公司配两天呢,是不是很快的这个东西就会被删掉啊,对吧,那一旦删掉你之前的十就没了,那你在消费者时候就没了,对吧,你要用这个属性啊,这个属性好,那接下来是聊的是这个属性呢,有两个参数可选,一个叫a list,一个叫。Latest叫最早的呢,最新的对吧,最近的最新的默认值是它。
05:01
所以我们看到你在控制台里边,你每一次启动一个消费者的时候,不加杠杠,For beginning,它是不是满足了第一个条件?因为你是一个新的组,它随机分配的是不是一个新的组啊,是不是这个属性要生效,而默认值是什么。Latest。那就从最大的开始消费吧,所以你在控制台里面,你不加杠,For beginning,每一次看到都是什么?最新的对吧,啊,以前消费的数据消费不到啊,以前消费者数据消费不到,好,那这个既然我们知道了这个点,我们可不可以在消费者里边我加一个这个属性对吧?点。Put这个呢叫consumer con点叫。Etet对吧,好,这个这个地方我给它重置一下,重置是什么。List,我把这个东西给他拿过来吧,啊把它拿过来list啊,这个地方呢,叫写一下重置。
06:01
消费者的。哦。啊,那我这个时候走一下。会怎么样?之前的会打印出来吗?会吗?诶,没打印啊,你不是重置了最早的吗。什么问题啊,我换组了吗?没换组好,没换组上一次是不是这个组保存的有。对不对,是不是保存的。失效了吗?没失效吧,也没过七天说把这个数据删了吧,我之前保留了100,现在我拿100去消费是不是正常的呀,对吧,跟你那个100是不是对接上来呀,啊我记着消费者,那你要想重新把所有的数据拿出来,你这应该做什么事,你不能叫阻民,对吧,不能叫big data塔,我改一下叫big data塔一这个组是不是新的好,新的是不是满足了这个的一个前提条件,然后它按俄list,它为什么叫A不是零啊。
07:05
它为什么叫al丽,不是零啊?来看是不是我改了一个组名之后,把最早的数据,Hello,什么爱硅谷这些东西都消费了,对吧?啊都消费出来了,这意思。啊,你要换组啊,你要换组,因为你如果没换组,来看一下,我再开一个生产者,注意我现在消费者关掉了啊。关掉了,我再开一个消费者,那接下来是不是我此时消费者不在线啊。消费者刚才发送了十条数据啊,那我再次开启消费者那会怎么样?嗯,是不是只会这十条啊。对吧,因为上一次假如说啊,上一次奥是100,我现在又生产了十条,是不是应该到一百一了,那由于你保留了100,你启动的时候,由于你有过初始化,而且你初始化的这个off没有失效,是不是应该从接着从这个地方开始消费,也就是说你现在阻没换,同时你奥赛没有失效,这个属性会生效吗?
08:11
不会生效。不会生效,它只在两种情况下会生效吧。一个是我们所说的换组了啊,你阻迷这个不存在,第二种情况,你之前组没换没问题,对吧,你可以干什么。数据之前保留的,对,有同学说的过期对吧,这个奥赛保留,这个奥赛已经过期了,对吧?啊是这个意思,好,那在面试过程当中,他有一个问题就是这样,如何重新消费某一个主题的数据。换一个组。同时。加上这个属性,因为它默认值是雷,你换组,假如说我这个属性给它干掉对吧,那我这个改成二。改成二,他有用吗?没用吗?那我消费者我重开一下,消费者在这重启。
09:06
这个时候会有用吗?不会有用吧,啊,一定要两个条件啊,一个是呢要换组,第二个要把那个重置的,这是为什么。还有刚才那个问题,为什么叫不是啊?因为最小的这个不一定是零吧。对吧,假如说你从七天前的数据删了,已经把前面1000条删掉,现在最小的是1000,那你从邻居消费能消费到吗?消费不到吧,他应该给你什么,从1000开始消费吧,是这个意思啊,这个要注意一下。这个是我们所讲的这个点啊,就是说由这个属性默认值,那其实我们可以看一下默认值对吧,那既然你是它一个参数的话,我们是不是应该可以从官网上去找一下呀。在这个地方。嗯。搞不搞?官网上找一下do,然后找到这个0.11对吧,这个。
10:05
诶,刷新完了。是吧,这个地方是什么,往上走是不是这一列走。默认叫什么default默认值吧,啊,默认值,因为他在这个官方的注释里面没有写这个默认值啊,没有写这个默认值啊,所以呢,你要自己要观察一下,就是这个地方它默认的是什么it,所以呢,你在控制台或者说刚才我们做测试的时候,把这个注释掉,你无论换不换组,它都不会从头消费,能理解这个事儿吧?啊,因为它有这个参数在里边,因为他没有。他这样的,有同学可能在想,没有的时候怎么给他最大值,对吧,是这样的。当你一个新的组来,因为我们说了一个组过来消费的时候,你是相当于断开重新连接吗?断开重新连接的时候,它是不是应该访问一下之前它保存的那个数据。他这个时候去访问的时候,一个新的组来了,他能访问到那个数对吧。
11:04
找不到了,找不到系统要给你一个。啊,系统要给你一个告诉你,哎,你反正没有了,你接下来从这个地方开始消费。好,那给你的时候就有俄斯的最大的和最小值,那最大值最小值卡普卡提取你知不知道。肯定知道呀,它里面存的数据他不知道对吧?啊,就卡夫卡集群去给他的,那接下来他就按照这个东西进行消费,按照这个内容进行消费,消费完了之后他发现没有数据啊,没有数据,同样的是不是也要把这个东西写回去啊。昨天我们是不是看到了一直在重复的刷同一个?有印象吗?我们在读取本地下划线,下划线cons of那个主题的时候,它是不是一直在重复的刷两条数据,因为零一两个分区嘛,是不是一直在重复的,对吧,因为他没有拉取到数据,没有拉取到数据,你还要把它做一个更新,更新的内容是不是跟上一条一样的,那你最大的是不是没有消费到数据,那是不是应该把最大的那个值给它保留进去。
12:06
对吧,啊,保留进去之后就会怎么样。下一次接着消费吗?从最大的开始消费了啊,从最大的开始消费了,也就是说刚才我们看到这个点,我把它关掉了之后,第一次启动他没消费到数据,当我们把它关闭掉,深产证再打开的时候,再启动是不是消费时量数据,因为已经保留进去了,把上一次消费的啊都保留进,能听懂这个意思。啊,能听懂吗。
我来说两句