00:03
好,那这一步搞定了,搞定之后呢,我们再切回到我们DWD叫被CDB,那我们还有一个卡不卡对吧,卡不卡拿过来。然后呢,也要去ADD think,那我们是不是写好了一个工具类啊,叫MY卡夫卡U麦卡夫卡。啊,麦卡优就点get卡一个producer啊,这里面呢,要一个主题,要一个主题。对吧,呃,当然这块包错呢,是因为我们是接掉的,那正常的你去转一下对吧,我们假假如说转一下点。Map。啊卖,然后呢,我们是杰森。OVJ。然后呢,要接3OB接点。Two three。对吧,那变成string类型做一个转换,那大家想一下这个工具类现在能用吗。
01:08
这个工具类现在还能不能用?突然发现怎么样啊,这个攻击类并不能用,为什么呀?它为什么又不能用了呢?对,Topic不一样,主要在于这个数据的主题,这个这个主题啊,在数据里边对不对啊,而且每个人主题还不一样,如果说这个数据要写到统一的一个主题,那咱们就可以这样玩了,那怎么办呢?现在。那这个不行,我们之前写的过滤类不行,那怎么办呢。
02:00
自定义。又要自定义了,是不是,所以跟大家说了,没那么简单啊,没那么简单对不对。啊,大家都疯了,为什么,为什么要这么折磨我们是不是啊,明明卡法的工具类都已经写好了,写到最后,写到最后才临了,临了发现这个东西怎么样?不得行了哈,不得行了,所以呢,我们要自定义,但是呢,其实不用自定义啊,就是只不过说大家这种方式没讲。啊,其实往卡巴写呢,还有一种方式,还有一种方式,只不过说大家这块呢,没有去讲过,那这边呢,给大家去讲一下啊,也就是说这种方式呢,我们不用了,对吧,不能这样用点I think。好,这里边呢,我们是这样啊,然后接下来呢,我们到这儿来还是到这个工具类啊,给大家再扩展一种另外的往卡卡写的一种方式啊啊,那这个地方呢,叫卡夫卡的一个生产者对吧,那我们一样的在这边再写一个public static。
03:08
然后呢,是这个。Producer对吧?Producer这个数据呢,注意啊,既然我们要写类似于这样子的,你看啊,由于我们之前写的是three。由于我们之前写的是string,对不对,写的是string,所以导致一个什么问题呢?导致啊,我们这个地方刚才我想这样加的时候。直接想这样加的时候他是不是报错。对吧,因为我们写死了里面写死了string,这个呢,我们这个流是阶层object的,那这种呢,不灵活不灵活,那怎样才灵活,大家告诉我,我这写什么才够灵活。我这写什么才够灵活,写object object我告诉你都不够灵活。
04:03
啊,不好处理。Obj啊,大家都说obj obj不好,我告诉你,Obj写进来,Object写进来,未来处理这个数据很难用,对吧,我们得写泛型。对了,我们得写泛型,不写不写不行啊,这必须要有类型,不写肯定不行。对了,用泛型,用泛型未来任何类型都能过来,对吧,进来之后我还有具体的类型可用,如果说你用obj不好意思,你接下来操作很复杂对吧?Object没有什么方法调用了,所以要泛型,但是这个泛型报错。啊,方法的泛型,注意在方法前面还要加一下。在方法的前面,我们也给他加一下,然后呢,我们叫干卡不卡的producer。啊,盖了开发六。
05:02
啊啊啊,是说代码不写了是吗?啊。强啊,那注意啊,这个东西必须要的啊,就是这属于方法的版型对吧,如果不要,你看这是红的。啊,就红的对吧,好,这个方法的泛型一定要注意在前面写一下,好,在前面写一下好,关于这个东西呢,我们等会再说,要传什么参数对吧,我们直接先return,又一个叫link卡夫卡,一个producer t对吧,这里边也得写T好CTRLT看一下,呃,以前我们是不是用的这个。大家呢,也只用过这个是不是。也只用过它啊,也只用过它,呃。那其实在往卡布拉写的时候,还有这个。来我们看啊。
06:00
这个地方呢,它叫一个什么。叫default topic,哎,那这个参数其实就告诉我们,既然这给了一个是一个默认的通用的,这个地方是一个默认的,那是不是肯定还有地方可以让我们自己传主题进来,能不能反应到这个点。这一点能不能反应过来?它的参数的名字叫default,是不是说明肯定还有其他地方?干什么事啊?可以传入主题吧,啊可以传主题对吧,好,那既然这样的话,我们用它,然后我看啊第二个是。序列化的一个stemal,第三个producer con,配置信息对吧,配置集群啊,AC啊等等的这些信息要在这儿好,最后一个seme,这个东西呢,不太熟,但是我可以告诉你,很负责的告诉你,它很简单。
07:07
啊,不熟没关系,它是一个枚举类,而且一打开这个类,大家就知道了它是什么情况。啊,大家就清楚了,他是什么情况对吧,不用关心最后一个。大家现在集体掉线了吗?是大家都掉线了吗?我怎么看见很多人全部在加入直播间呢?卡了吗?现在好了吗?刷新好了是吧?啊我我一我我感觉到这个点了,我感觉到这个点了对吧,刚刚卡了一下,因为很多人重新去加入这个直播间,我看到了,我看到了现在好了对吧?行,那我把这个再说一下,没问题,我知道陈总这个还要你提醒吗?对不对,我这一点。意识还是有的,我肯定会把这四个参数重说一下啊。
08:02
好,首先这个方法是不是没有问题了,我们注意啊,这个里边我们要用这个方法。重载的它对吧?好,那第一个参数呢,它叫default topic叫默认主题,那其实看这个参数我们也能意识到,它一定还有其他的地方传主题。一定有其他的地方传主题,要不然它不能叫默认的主题,也就是说当你该传主题的地方没传的时候,那它就启用默认的,这个有没有问题?这个能不能行。这个没问题吧,对吧?啊,其实看这个default就知道了,好,那接下来看第二个参数叫。序列化。
09:01
它的一个序列化的STEM,以前我们用的是不是这个,我们用的都叫simple string STEM对不对,好它呢,就不是的不是的了啊呃,我们就可以不用这个three了,用自己写的,而且呢,它带了番茄记,对吧,我们可以自定一个,其实我可以告诉你那个你自己的主题就在这儿传的。咱们自己的主题名就是在这儿去传的啊,在这第三个参数很好理解对吧,第三个参数它是pro。啊,它是part对吧,就是配置信息,那肯定要的第四个叫SE magic SE magic,但是这个参数呢,大家不太明白,没关系,它是一个枚举类型啊,那我们可以把这个参数先给大家看一下。我们点进去找到这个往下走,就他呗,对吧,点进来,点进来之后呢,麦这个点进来看啊,它这个枚举来。最后一个参数其实是用来指定。
10:04
一致性语义的啊,所以我说了它很简单啊,它很简单,它不难,只不过说大家之前没接触过而已啊,但是它并不难,对吧,这个没问题吧,它是一个一致性语义啊,很简单,好,那回过头来我们写这个代码啊,第一个默认的主题,那我们到这边来搞一个啊,Private,然后static three啊叫default。Topic。好,等于叫DWD。Default。Topic可以吧,那我们就叫这个名字行,那第一个参数就有了,往这一放啊,但是一般也用不上啊,你随便取你叫test的都行,反正也用不上,我们肯定不会用这个主题的,对吧,但是他一定要要一个啊,一定要有一个好,那第二个位置,第二个位置呢,他要一个这个什么卡不卡的civilization的一个STEM,好,那我们去又一个叫卡布卡的一个civilization STEM完了。
11:08
为什么完了呢?它是一个接口,发现没注意前面是I,能看清吗。这前面是一个绿色的I,能不能看清啊。能吧,是一个接口,那怎么办呢?找时间类,或者说如果它只有一个方法的话,我们是不是可以自定义啊,对吧,好,那我回这。哎,真的怎么样,只有一个方法,好,那我们先放一放啊,先放一放。呃,大家第三个police啊。看清绿色就行,对吧,啊那可以啊,行,又一个这个practice,第三个参数我们先写好practice对吧,Practice呢,我们要放一些东西了点。然后呢,是producer。看点主要是这个集群信息对吧?啊然后呢,Broke主要是他。
12:07
对吧,好,第三个参数呢,我们也有了,往那一放,好还有最后一个,最后一个呢,一致性语义对吧?一致语义呢叫SE magic,那我们写一下,假如说我们给一个这个,那因为如果当我们不开启这个checkpoint的时候,这设置为exactly one,大家说有用吗?大家说这个地方如果说我没有开启checkpoint这个地方我设置为S有用吗?对的,没有用对吧?啊,那checkpoint呢,反正我也不开启,我这个地方呢,写个到啊,我就写个到,当然你可以用一个三词结合check point去看一看啊,去看一看,呃,我可以告诉你,你开启check方警之后,这个地方是exactly,它会报一个错,你先自己去解决一下啊,这个地方exactly advance啊我这样。
13:04
然后呢,你把CK打开,如果说CK不开这个是不生效的,跟你写的那是没什么区别的。啊,跟写到那是没区别的,但是当你把CK打开,然后呢,这个地方是一个360单词,它会报一个错,你先自己去找这个错。啊,先自己去解决这个错误啊,我告诉你这个错误好,那这个东西搞定了,我们现在只差最后一个了吧,差一个谁啊这个地方。差这个地方。对吧,这个地方呢,要返回一个producer record,好,那来你一个producer record。来看,熟悉吗?熟不熟悉?第一天还碰到过吧?
14:02
卡不卡,Time?卡不卡time spring当中是不是点send?那你看谁出现了?主题就出现了,卡夫卡生产者生产消息可以了,好,那也就是说看啊,这是一个一个的元素,然后在这个地方我们要去传一个主题,那我能不能把这个元素当中的主题信息传进来。能不能?可以吧,那这样不就解决了我们之前所说的这个问题吗?对吧,就是这样解决的好,但是有一个问题了很严重,这个问题非常严重什么呢?我们为了通用来了一个T妙,你别先着急妙啊。你别着急,妙问题来了,这个问题很严重,我告诉你。
15:04
这这这这是一个T,那那个怎么获取呢。这不完犊子了吗?啊,我告诉你先别着急妙。啊,等会再说。那怎么办呢,这块。它是T啊,其实我们知道这个数据长什么样子,有这个DB table name,有这个before after,对吧,还有。这个tap还有think table,那实际上我就想把这里面think table取出来,放在第一个位置,对吧,主题就有了,那怎么办呢?现在是一个泛型怎么办呢。有没有同学告诉我这个地方应该怎么办?
16:14
强转类型to string泛型,擦除继承泛型。这都在说什么东西?To three?还能想到to three吗?强转类型啊。反射。啊,其实反射也行,在这里边能写啊,但实际上最好的方式是什么呢?对了,向总说对了,其实不在这创建,我们在外面创建,因为外面用的时候啊,是不是说我们当我们调用这个方法的时候,类型就已经是确定的了。
17:02
大家想一下是不是?就是说在外面用的时候,我的类型还是T吗?当我去用这个方法的时候,他还是不是T,大家想。还是不是T啊,就不是T了吧,我用的时候这个类型就确认了,好,那也就是说这个东西啊,我不在这写,不在这写干什么呢,通过参数传进来。啊,通过参数传进来,我们这传一个谁呢,传一个他。我们从外面传一个类型进来,好这个地方呢,干掉叫卡夫卡的一个这个。对吧,不在里边写死后知后觉是吗?好,那这个就有意思了,来到这来看啊,我们就可以调用叫MY卡YouTube点开卡producer,然后这边又有一个卡卡的一个STEM,好,那你看这个时候我们调用的时候,它就已经是一个JS object的,不是T了吧,不是D的,因为当我们用的时候,类型就是确认的。
18:11
是不是,那这个时候你看element它就是谁了,Jason object它就不是T了,它就不是T了啊在外面用的时候,诶它就好了。对吧?啊,所以大家想一下,你们之前为什么接触过框架当中代码的时候,有那么多的抽象类接口,喜欢写泛型,因为一样的它里边没办法确定类型不好写,那怎么办?你外面谁用谁写,因为当你用到这个方法,用到这个类或者这个接口的时候,那么你用的时候。这个类型就一定是确定的。是不是?能想明白这个问题吧,所以你看到框架里边很喜欢用抽象类,用接口啊,用泛型就是因为它没办法定死,你用的时候可能我们用的时候可能是A类型,B类型,C类型,那我只能写一个泛型,我只写一个方法就够了。
19:15
对吧,但你用的时候呢,你类型确定了,把外面你自己去实现对吧,那这样的话我们就好做了呀,那又有一个producer record好第一个位置,那我们还有选用它啊。我们肯定选用它对吧?好,那这个地方类型呢,就是把这个挪过来啊,啊,那这个地方我们选用的是最后一个轮巡嘛,不指定分区,也不指定key啊,就这些东西都不指定行,第一个位置呢,是element.get three叫think table。没问题吧,第一个位置是不是think table呀,对吧?啊think table其实我们的主题啊,那第二个位置看一下,我们就选它value啊,Best数组直接数组,所以呢,我们就element点。
20:04
Get three,谁呢?呃,那这个地方呢,应该是皮肤。哎,不是after after什么before after数据对吧,然后呢,他要直接数组,那我们就get BA。Database。对吧,啊,注意这个数据after,那这个艾的数据格式大家应该清楚吧。对吧,就是我们有think table,比原始数据多了一个think table,对吧,去掉了几个字段,所以数据呢,还得是看这个after,还得看after,这两个没问题吧,这两个字段的选取有没有问题。Single table和A有没有问题?对,这一块是没有问题的,对吧,好,那到这块为止呢,咱们往卡普卡写的这个代码也已经。搞定了。啊,都已经搞定了啊,就搞定了,拜拜。
我来说两句