00:00
好,那看完这个之后呢,我们来写一个这个。代码对吧,啊代码,那同样的来创建一个类。对吧。点叫第一个叫time时间的一个拦截器,对吧。Nt cp to啊,时间的一个拦截器,刚才说了它要实现。Producer in the对吧?Producer啊实现这个接口,注意它是客户端包producer包下的,因为到了消费者那边有什么拦截信号。不会了吧,就跟我们学的一样,它那个拦截器是不是在S端呀。不可能说把拦截器定义定义到那个C端的啊,C端没有什么拦截器,这个也一样,那一定在生产者这边啊,生产者这边好,那这边呢,有一个什么分行对吧。对。奥加回车实现相应的一个方法啊,相应的一个方法来。
01:02
第一个。就是我们所说的接收参数是。Producer record,返回值是。Producer record对吧?啊producer record,这个是我们说的,你发送一条数据之后,他给你一个回执消息啊,给你一个回执消息close配置信息对吧,一般的我们习惯上把他应该干什么。是不是放在前面啊,因为它先掉嘛,然后循环的就交用这两个内容,然后最后做一次收尾吧,啊所以收尾好,既然这一个是我们所说的时间拦截器,那我们要动的方法就是。他,那就是他吧,好,那还记得我们要做什么事?在前面加一个时间,也就是说把这个record.value给它拿出来吧。Y6,给它拿出来啊,这个Y6,那接下来对于这个Y6我们要做什么事?加一个时间戳是不是啊,加一个时间戳,那这个第一步。
02:04
取出。呃,这个叫什么数据对吧?啊,取出距离的一个数据,数据的VALUE6,那接下来你要注意的是在质量你把VALUE6获取到了,加时间桌呢,你也会加,无论在前面加,在后面加都可以的啊,获取到system点看对吧?啊把它获取出来。你要关注这。这个返回值。这个返回值我们应该怎么办?是它吗?把它还写回去。对吧,是他吗?直接把它写回去。我们得干什么。创建一个新的。创建一个新的啊,创建一个新的对象,因为这款你看的点。
03:05
我们想的是很简单,就是这个事啊,Recorder,我们想着是不是把它改了之后,再把这个value给他塞过去啊。你就可以用原来的吧,但是有什么set value等等这些方法。没有没有,也就是说这个东西呢,一旦确定不可改了。那既然不可改了,我们只能去构建一个什么新的这个producer对象对不对?如果说他提供了一个什么set value,那就很简单,假设这边有一个set value方法啊,假设的set value括号,那括号里面我只要写system.kind minutes对吧?加上至于你想逗号拼接或者什么东西,假如说逗号拼接了,再加上这这个什么。Value啊,设置回去,设置回去之后,然后接下来做个省事,把这个record做一个返回就够了吧,但是。没,并没有提供类似的方法说明这个东西什么不改,不可改的话,我们只能去第二步。
04:01
创建一个什么新的producer record的对象吧,啊对象,然后之后呢,把它给它写出去啊,其实你不用单独的写明出来,直接说创建一个对象D。返回对吧啊,没返回,那我们就就可以用一个什么匿名对象了,对吧?啊,你有一个匿名对象,那在这一块6PRODUCER record啊。这里呢?用什么用first?是不是应该从里面获取了,对吧?哎,你不能动人家这个经过拦截器,人家本来传到,然后你经过拦截器之后把它传到里面,这个不合适吧,啊,这个就不合适了,对吧?啊,还是得用人家原来自己的那。分区呢?点发地震还是之前的吧,你要之前没传,那这个地方还是没传,最后经过分器去做梳理吧,啊就这个事的啊,这些东西呢,我们都不管好,那然后再写一个就写一个点TV吧啊record点。
05:13
啊,逗号record.value但是这个value得改了。对吧,我们得改一下system.minutes加上这样我们加一个什么。啊,用逗号给它隔开,跟之前的数据呢,给它隔开OK吧,啊就做这个事是不是啊做这个事儿,因为它并不能说支持这个东西可以去改,那其实这个value获取。那这样既然我们都获取了。既然都获取了不用是不是有点浪费啊,对吧,因为我们当时想的是把它获取出来,然后添加回去,然后设置回去了,但实际上它没有那个什么设置回去的方法,那我们只能去拗一个新的对象法啊,只能去扭一个新的对象,好那这个就是关于我们这个时间拦截器是不是就搞定了。
06:02
对吧,啊时间拦截器,因为这个里边我们是给它分开是说明哎有多个拦截器也可以给它拆分开了啊,假如逻辑比较复杂的时候,OK,那接下来还有一个拦截器叫奇数的拦截器,对吧。Counter in the。二走。这个呢,同样的实现。Producer intercept。啊,给到一个什么分行string啊,加飞车实现相应的方法的方法,好,那这个东西我们说了是要做什么。奇数统计成功或失败的个数条数对吧?啊,那统计成功或失败。跟他有关系吗?跟他有关系吗?没关系,那需要动吗?需要动吗?好好看一下这个方法需要动吗?需要动吗?应该返回什么?Record是数据不需要动吧,哎,数据不需要动,那你要返回一个到,那你等于写了一个过滤拦截器,而且呢,清一色全部过滤掉,对吧?那你所有数据都涉用到了啊,收不到这一次,好,那重要的是不是在这里面去写。
07:21
啊,重要的在这里面写,那我们做这个事判断if,说这个Meta data,如果说不等于,那说明它是成功的。对吧,那我们把成功的那个变量自增一就行了。但是有一个问题,最终我们刚才所分析的是不是在这进行最终的一个什么。输出啊啊,在这做一个最终的输出,在这做一个最终的输出,所以你在这个方法增加你能把说success。在这吗?应该写在外面,是不是应该第一在这吧啊int类型一个什么Co CS success,好,还有一个int型的一好啊好吧,Error吧,好定一个error,一个success OK,那这两个东西定义好了,定义好之后呢,在这我们就可以success加加对吧啊加加。
08:17
好,然后。AR加加对吧,啊加加,那最后在close这我们做一个什么事。输出一下。嗯。Say。Success,然后加上A这个。冒号加上什么success对吧?啊success啊,然后括号说D复制一份,把这个改成什么A对吧,然后呢,把它也改成。还啊输出一下啊,成功了多少条,失败了多少条,对吧?啊这样去做啊这样去做,那我们这两个东西是不是完全可以写在一个方一个拦截器里边啊,这样呢,就告诉大家这个地方呢,也可以形成拦截气量。
09:03
对吧,假如说你逻辑复杂了,一个拦截器搞不定的,可以分两次做,或者说有一些公用的拦截器的一个规则,你是不是可以提出来,对吧,可以提供复用吧,啊它也一样的道理啊,提供复用其实你在一个方法里边也可以啊,一个,但是不够解耦吧,啊之前我们有说过这个事啊。
我来说两句