00:00
OK啊,呃,刚才我们把这个消费者啊,就是这个写好写完了啊,那写完以后呢,下面就是我们这个生产者了啊呃,这个生产者的话,我们看一下这个图啊,就将来我们要把数据呢,是写到你这个卡夫卡中,那这个往出写,往夫卡去写的话呢,呃,这个就是我们自己来去控制了,对不对,需要我们自己去创建这个生产者,对,然后呢,往它里面去写数据了啊OK,所以说呢,我们,呃生产数据的话,那我们需要先有一个生产者对象啊,那我们这样吧,我们先定一个这个生产者对象啊,对吧?好,那这个生产者对象的话呢,呃,我们叫。叫什么呀?就叫这个吧。可以吧,知道producer啊,然后呢,它是一个卡不卡的producer OK。好,先把这个对象给大家这个声明一下啊,但是你光有对光有这个。我看一下他说什么有有泛型是吧,好呃,那你光有这个光有定义不行啊。
01:06
你得有具体的值啊,所以说我们还得怎么去写个方法,创建这个生产者对象,能明白吧,好,那我们怎么写的DF,那我比如说就叫什么,就叫这个create吧,Create这个producer啊。好,我给你返回一个这个卡不卡的一个producer。OK,好,那这样的话,你看将来我就不用写now了啊,这我就什么直接调用一下这个correct producer就可以了,因为我现在写的是一个半生对象对吧,所以说呢,我敢保证啊,它是一个单立的,那么如果它是单立的话呢,它里面这个东西也就是一个单立的。对吧,因为工具类嘛,那我就什么只要创建一次就够了,我不不我没必要说这个每次都去创建它,好吧,在我整个环境中,我创建一次这个对象就OK了啊行,那这里面怎么创建啊,那这里面代码不就是new呗,这肯定得去new了啊,卡不卡什么produce。
02:02
好,范型写上。把这个范型写上啊,OK,然后呢,诶怎么没写上啊,好,然后把它这个接收回来。行,呃,当然哈,这个你就不能再去给它赋值了啊,我们是需要附到这个什么叫这个producer上面的啊呃,啊,这个可以啊,接收回来吧,这是那个produce,然后最后呢,再把producer给他返还回去。能看到吧,啊,当然你这么写肯定还不行啊,你说你创建一个生产者,那你这个生产者。往哪个topic生产啊,对吧,你的卡卡在哪里啊。他是不是也得有这个生产者的配置啊,你来看这里面。对不对。是不是也有这个生产者的配置啊?你们还明白?对吧,除了这个生产者的配置,呃,那我们将来。啊对啊,就是有一个生产者配置就可以了啊,因为我们现在只是创建这个生产者对象嘛,那我是不是需要有一个生产者的配置对象了呀。
03:02
那这个怎么写?啊。来看一下啊,呃,它这里面要求的是一个叫这个有跳的一个map啊,那这个东西,呃,因为我们这个生产者,反正这个只创建一次,那我就可以把它写到这里面了,对不对?好,那我们这样吧,他要的是一个有跳的map,那我就用上一个哈希map。对吧,呃,不是它啊,是有跳的,有跳是Java的啊同学们倒别倒错包啊来Java的,然后呢,这里面我们给泛型啊。呃,我看看啊,他的我这一下啊,呃,String any rough是吧,Rough。OK,来把它这个介绍回来,行,这是我们的叫做producer的一个什么con OK吧,然后呢,你把这个东西给他传进来。行,那这里面就要去写了啊,大家想想吧,我们的生产者,我们又需要写什么配置。
04:02
对吧,首先最基本的几个不用你再去想了啊,像那个什么卡不卡集群的位置,对吧,这个不需要你再去想了啊,我就自己给你写出来了,比丢卡菲你再去想别的哈,我们去put put谁呢。呃,对于这个生产者对象来讲啊,我们也有一个什么生产者的配置对象,叫这个producer咖对吧,就对应的你这个消费者对吧,他是一个consumer con,然后呢,我这个是一个什么叫producer con啊,我把它拿到这吧。对吧,拿到这啊,就是我这个生产者的一个生产者的配置对象啊,生产者配置配置类啊OK吧,行,那它里面我就可以写什么,就可以写这个叫做producer producer con打包啊好,它里面比如说你的叫什么booto s con,你看一下点过来是不是还是它呀。对不对,好来后面怎么写的,后面不就还是这个东西吗?呃,我就不写了啊。
05:04
拿回来。对吧,这几个基本的我就不用再去想了啊好,这是一个,然后再一个什么KV的这什么序列化器,对吧,这也不需要你去想了啊,你去你去想别的好吧,同学们来我我去写基本的,然后呢,你给我你帮着我去想别的啊put叫找。Con讲叫什么key的一个class con对吧?好,那这个我们用的还是一个字符串,那我需要找一下这个类啊,找这个字符串的一个S,呃,就这个。好,把这个全类名给它copy出来,然后呢放到这个地方,然后呢吧来再来写啊producer con.put我们知道这个producer con讲什么叫value的一个什么con。对吧,还是一样的,都是一个字符串。
06:01
这个能看懂吧,都是一个字串的啊行,这个集群位置虚拟化器有了,还需要有什么东西,大家想想。对于这个生产者来讲,还需要有什么?来还是在公屏里面打一下啊,我看看大家这个记不记得啊。诶,有同学说到了这个白三,还有这个什么另加Ms OK。呃,那你想到这两个应该还会再想到另外一个吧,我觉得什么呀。A。对不对。是不是这个你应该也得想得到吧,你的A的级别,这是你的这个什么缓冲区的大小,这个是那个时间。对吧,哎,这应该都能够想得到啊,好来,还有什么东西啊,再想想吧,还有没有别的。
07:07
Rich,诶这个好,Rich就是这个重试的一个次数啊,这几个应该都是相关的啊,你比如说这个AC,那我收到你的AC了,代表的消息发送成功了,如果我没有收到代表的消息没有发送成功,那我就要去重试重发对不对,那你说我给你重试多少次呢?是吧?哎,应该都是一体的啊,这应该都能够想得到。好,还有没有别的呀。同学们。差不多了吧,应该。对吧,这个比较关键的啊,应该就是这么些个了啊是不是,呃,那像这个A的话,我们也写一下吧,这个AC的话,呃。来注意啊,这个A的话我们写一下啊producer con讲put,好con什么叫做AKS对不对啊,这是那个ACKS对不对?好它这个默认配的是什么来着。
08:08
啊,这个我们去找一下啊,它的ACKS。我找找啊,稍等一下。AKS,好在这儿啊,呃,它的默认值是个一啊,默认值是个一,一的话呢,就是。就这个呗。是不是这是一吧。是不是啊,这是一啊,然后呢,呃,我们也可以什么配成这个零啊,也可以什么配成这个负一啊,或者是二,就这两个是一样的呗,对吧,这两个是一样的啊,默认它是个一啊,OK,行呃。来吧,这个那我就嗯,写个写个什么,写个写个二吧。来写吧啊,我就写个二吧啊,写个二啊好行来还有什么呀,这个batch size啊,这几个我就不配了吧,这几个它应该都是默认值就可以了,这个back side它默认应该是16KD啊。
09:03
是不16KB啊,查一下啊,白赛16384啊,应该是16KB啊,然后这个0Ms,他默认应该是个零吧,我记得。对不对。好,另点MS啊,它默认值应该是个零。是不是啊,应该是个零啊好,然后这个这个多少次了,这个我记不住了啊,我看一下几次啊。好,它默认啊,默认也是个零对不对啊,默认也是个零啊,就是不重试,那你可以什么自己去写啊,比说我这个重试多少次啊,比如说我就呃这我也不写了吧啊,因为这个其实不是很关键啊,对于我们来讲不是很关键,但是你将来这个你真正的这个生长环境中啊,那我觉得你这些东西呢,还是得好好的去琢磨,琢磨应该怎么去写的,对吧,结合他这个实际情况去写啊,我们目前的话呢,呃,其实还好。好吧,啊,其实还好啊,OK啊,那我们的这个卡不卡的,这个生产者的配置啊,这个是集群的位置,然后呢,序列化器,然后就是这个ACKS啊呃,我看看还有没有别的啊,这个一下子也想不起来了,我看一下啊,差不多了,应该是啊。
10:13
呃,消费者的,然后呢,这个下面是生产者的。嗯。对,差不多就这么几个啊,然后它这里面还有就还有一个我们可以稍微提一下啊,就是那个呃,密等性啊密等配置,这个大家有接触过吧等配置。有没有接受过就这个值啊,这我也不写了哈,我就给你提一下啊呃,因为现在这个卡不卡的这个生产者,他其实可以做这个密档发送的啊呃,叫IDE哎,就这个啊对吧,就这个密等性的一个配置。有没有印象,同学们?你们应该都也讲过吧,这个。
11:00
啊,这个东西大家可以想配上也可以配上啊,这个是管这个生产者的啊,就是它可以怎么做一个密发送。对吧,啊,做一个密码发送啊呃,这个那既然都写出来,那我就写上吧,好吧,写上得了啊。写上啊。好,那就出呗,对吧,开启啊,它这个默认值是多少呀,我看看啊,呃,我看一下。好,复制过来,还是来到这个官网中啊,我们去看一下。呃,它默认是一个false啊,那你可以把它打开改成这个处啊,OK,行,呃,那这几个应该就差不多了啊,然后如果说这个如果你还要加别的的话,那你什么再回头去加啊,行,那接下来我们就可以把这个producer config呢给它啊,就已经放到这了是吧?行,这样的话,你看一下我的生产的对象,我就把它这个创建出来了。OK吧,那这个创建出来以后,接下来就是写我们这个生产的这个方法啊,那这个方法我们怎么写呢?看一下啊,我们就写个DF,比如说我们要发送数据,那我就散呗,对吧?哎,Send就是发送数据啊呃,这个没有什么反馈值,你就发完就完事了,对吧?好呃,那你这个producer讲这个散的时候你看一下啊,他要求我们传什么东西啊。
12:14
他要求我们传上一个,这个叫做。Producer record。对吧,那就说白了啊,这里面我们需要什么去写什么呀,是不是写你的这个producer record呀,就是你的写你的这个消息啊,那我们需要用上一个producer record。好,那么你在new的时候,这里面也需要你写泛型啊,把这个泛型都写上,然后后面你看一下这里面传的东西,那可就情况比较多了。对吧,首先啊,Topic你得告诉我。这是必须的,然后呢,再一个就是你的value,你必须得告诉我,就是你这个消息你必须得告诉我,像其他的话,你就可以可选了,比如说有没有key啊,对吧,有没有这个什么。呃,有没有这个什么part啊,就是你这个指定这个分区号啊,啊,你可以自己去选择。
13:00
对吧,这个大家应该都还记得啊,那我呃,这样吧,我们这个的话,就把这个topic让他给我传过来啊,那传一个topic过来对吧,因为我也不知道你要往哪个主题里面放数据,那我就让你传过来,后面就是一个value啊,那这个value的话就是消息,把MSG啊,这也是一个消息,那我就把这个消息放到这,这就可以了。对吧?啊,那么像这个方法的话呢,呃,我们就说没有指定K啊,这个生产的时候没有指定K,然后呢,也没有指定这个,呃分区号对吧,那它就是按照什么呀,按照这个按照就是默认的什么呀,默认的这个粘性分区啊粘性。啊,默认什么这个年性分析策略来的啊。能理解吧,啊,那么当然的话,我们也可以写重载的啊,比如说我再来写一个方法。写个什么重载的呢,就是我可以指定一个key。按照P好进行什么进行这个分区。对不对,那你在这个传的时候呢,我要求你把这个key给我传过来一下,好,那么将来呃,我再去发送消息的时候,你看一下我的这里面,我是不是可以指定一个key的呀,对吧,那我可以把key放到这个地方。
14:18
看到了吧,就是你可以按照年限的方式去发送,然后呢,你也可以什么在需要指定K的场景里面,你可以什么给我传过来一个K,那我就什么按照K来去给你做这个分区操作。OK吧,所以说你看这个地方,我们就涉及到了你这个生产者的分区策略了。对吧,这个事情呢,我们在上午给他去,呃,讲解这个前置知识的时候也说过啊,说这个点你今天下去以后好好看一看吧,明白吧,好好看一看啊,我这个相信大多数同学应该是忘了。对吧,它有几种情况,每一种情况是什么样的一个效果,对吧,你自己去看一看啊,我现在就不跟你多说了啊。OK行,那我们就把这个写好了啊,就是一个是消费,一个是这个生产啊呃,那你正常情况下,你这个用完以后,你你得关对不对。
15:09
是吧,啊,那这个关的话呢,呃,那你最好也得写一个方法,比如说我们来写个方法吧,就是关闭的啊,就这个对象你得关呗,对吧,来关闭生产的对象啊,你用完了吗?你不得关呀,对吧,怎么关呢?就close呗。对吧,啊,然后呢。这个也不需要,不需要用什么返回值啊,那我关的话,我要判断一下if什么呀,就是你的这个producer是这个不等于空的啊OK,那我就什么可以去关了啊,怎么关呀,就直接什么producer close就把它关掉了。理解吧,啊,当然其实我们现在呃,写代码的用不着关啊,因为我们整个项目,整个应用我们都在使用这么一个工具类,对吧,而且的话,它是一个什么伴生对象,那么它就是一个单立的,如果说它是单立的情况下,你看了哈,它是单立的情况下,那我的这个对象呢,它就只有一个,那比如说呢,诶,我在我的一个应用中,我把它用完了,然后呢,你就什么直接给关了,那我别的一个APP也是属于我这个项目的,那我一定要这个对象发现已经是关闭的,对吧,那就不太合适啊,或者说呢,你可以什么把这个方法呢,重新给他写一下,就是这里面方法。
16:24
创建对象的时候,你可以先先判断一下,如果说你这个对象是有值的。对吧,那我就什么直接给你返回,如果说你是没有值的,那我再给你什么做这个创建过程。能听懂吧,这样也可以啊,就看你怎么去封装了啊行,呃,大概的意思就是这样子的啊,那我们就把它这个写好了,好停一下吧。
我来说两句