- 00:00 - 好,那刚才呢,我们是把这个拦截器啊,带着大家去写了一下啊,整个那个内容,当然呢,你可以自己明天周四的时候,哎,你可以写两个拦截器试试。对吧?啊,你可以干什么呢?你把那个一的里边数据拿出来啊,给他改一改,我们当年没有改一的内容吧,啊,你可以改一改,或者你判断当前里边假如说带hello漏的,你就给它忽滤掉返回档你试试对吧?啊等等的,你可以自己做一些测试,因为你会的这个逻辑,你整个的拦截器会自定一种,其他的就是你公司当中业务问题的吧,就看你想怎么样来对这个数据做处理啊做处理没问题,好,那接下来刚才呢是拦截器,接下来我们要聊的是这个source。因为官方他提供了很多一个,但是有时候啊就不太够用。就类似于搜狗这个内容。没有监控,没有监控了,那假如说我们要自定义,哎,这个来。监控买so。 
- 01:00 - 监控搜狗里边的一个数据,那大家的一个思路应该是什么样子,就是我先不考虑代码怎么写啊。对吧,就大概的整体的一个思路。想一下。监控MY搜狗数据。不用考虑具体的要实现什么类,这个不用考虑哪些方法,对吧,我们考虑的是逻辑对不对啊考虑逻辑,那你要干什么事想。你是不是要有GBBC的一个连接。对吧,然后去读数据。读完数据之后呢?写给China。对吧,这是一次,那你这个source是不是它里面某一个方法也同样的,跟那个我们刚才看到那个in这个方法一样,被循环调用啊,这个是他自己的事啊,那循环调用有一个问题来了,第二次调用的时候。你应该要干什么事啊? 
- 02:00 - 读新数据吧。对吧,你刚才读的数据你还要读吗。就刚才已经读到第十行了,现在是不是应该从第11行开始读啊,对吧,你你要干什么事啊,你读完之后,你要把读到位置是不是保留下来,对吧?啊是这个意思,你要在内存当中保存,你为了做这个断点续传这个功能,是不是也要把它写在一个。非意时环境当中啊,首先在内存当中,你是不是要有一份这个数据,说上一次到时了,下一次呢,从十一开始读,你是不是要有这个内容,对吧?那为了有断点续传的功能,是不是同样的也要把它保留下来啊,啊就是其实自定义点买搜那个东西还挺复杂的,它就复杂的,那我们当年要写的呢,还同样的一个简单一点的啊,从简单一点出发,如果你想要看一下啊,复杂一点东西,我们当时说了这块已经给你提供了。已经给你提供了。在这块有人看过这里边儿这个代码吗。这个代码。还是蛮多的啊,对于MYS的一个处理工程代码,跟你们写的代码不一样,这是我给学生去解决他们公司业务需求的啊,所以呢,写的肯定不是说那简单一点啊,简单一点啊就是呃,因为功能代码可能不一样,他考虑的事情比较多一点啊,你要转这个数据,而且MY搜读出来数据啊,是那个什么,呃,对吧,你要转成转成这些乱七八糟的东西,考虑的事情比较多啊,那我们当前写呢,就不写那个。 
- 03:29 - 啊,不写这个也比较复杂,而且呢,那个视频也给你们,你们下载的有视频,我之前讲之前讲过那个东西啊,呃,有兴趣的可以自己看着代码,然后去听一听也可以啊,当然是,呃,因为正好明天周四嘛,所以提加了一个点,那我们要写的是比较简单的,我们就很简单的,我们直接也不读什么买搜数据,也不读什么文件数据了,我们直接在里边去造数据,用一个做循环能听懂。我们就用一个负循环来造一些数据啊,自己在里边造,因为你自己造的数据,在代码里面造的数据能够传输过来,那无非就是你造的数据要替换成外部读进来的数据。 
- 04:07 - 对吧,你造的数据如果能在这个整个芙蓉里面传输,那你把造的数据换成JDBC拿到数据行不行。就可以传出来了,你换成IO流读的文件数据行不行?对吧,啊是一样的,那还有一个点就是我们要搞清楚他官方文档里面写的那种黑体,还有非黑体,就是类似于有。默认值和没有默认值的这种东西。这个参数是怎么来的?还有同样的,我们在配置文件里面写的那个东西,他怎么就在代码里面用到,我们关心的是这一点,因为业务逻辑是公司啊定,就像我们现在讲的MYS狗L,很多公司他不用这个服,我们来监控这个MYSQL,那你不是专门的讲具体的业务搞那复杂代码是不是没有用啊?对吧,我们要理清楚的是核心的一些东西吧,啊核心的一个东西,所以呢,我们来看一下啊,这里边呢,我们要实现一个什么呢?他同样的要实现一个接口。 
- 05:02 - 啊,实现一个接口,刚才我们自定义拦截器的时候,是不是实现了in the的这个接口。对吧,啊,那这个地方呢,其实官网上有呃,自定义的时候来documentation在哪呢?在这个develop的,对吧?啊,我们还是同样的develop呢,也看这个什么。一点的啊,跟我版本一样。这么慢。其实我记得变化不大啊,变化不大OK,那我们看一下啊,呃,这个他他刷一不了,那算了,先先这样这里面就有对吧,嗯,来找一个那个。对吧,South think China in the是不是都有啊,点开。这有什么?视力代码对吧,设例代码,那你看一下。记着一个抽象的,然后实现。 
- 06:00 - 实现两个接口。对吧,啊实现两个接口,然后呢,这个东西你没得挑吧。对吧,人家说了你要跟他官方的一个东西做对接,你要那样做,然后接下来里面是不是有很多的方法呀。看一下。第一个。叫配置信息,然后你看一下这个配置信息它怎么读的。这个方法就是它用来读取加载,也就是说它我们不是写了整个启动之后,把我们的自己写的配置文件是不是写在命令行里边,它会把命令行里边加载进来,那加载进来是整个的配置文件,它怎么跟我们代码关联的呢?就是通过这个地方。来实现的整个的一个关联。实现整个这个观点来看一下,他用contact是不是全局的一个什么上下文,之前在当中经常见到,不是当中经常见到的context上下文好,这个地方呢,它就能获得上下文里边所有的配置信息,这个地方呢传的是K。 
- 07:12 - 后面有at value,是不是我们看到官方文档提供的配置文件,它有两种,一种呢,是我们所看到的。这个什么什么K后面呢,跟着一个杠一种呢是什么什么东西,跟着一个什么30秒等等这些东西。对吧,好,这个30是不是我们所说的默认的配置,这个默认配置写在哪呢?在代码里面。写在这个位置的,也就是说它获取数据有两种方式,一种呢叫get string啊,至于你配的是D还是in呢,自己知道对吧,这个地方呢,直接传一个K。这个就是没有默认值的内容,后面画杠的能听懂。后面画杠的啊,这种呢,就是它虽然你。有默认值啊,有默认值,但是你要注意我们也可以自己配吧,配的时候它优先获取这个,如果获得不到,他用默认值来代替,能听懂。 
- 08:08 - 啊,它是这样来做的,等会呢,我们在自己写自定义source的时候,也设计一个这样的内容,我们就写两个属性,最后呢,我们可配的有两个,一个有默认值,一个没默认值,能听懂啊我们设计一下啊,自己设计一下好之后呢,说我们看到什么start。到了,虽然这个是1.9文档啊,你要注意等会呢,这两个方法啊,有一点出有一点区别,等我们自己写的时候,那文档当中他一直没改,关于这块呢,他一直没改啊好,然后还有这个process。Startto是不是跟我们所看到的什么初始化?方法一样的道理啊,对吧,开启关闭对吧,然后这个地方有一个。你看一下他是干什么事的。第一。叫接收新的数据。 
- 09:03 - 看见没对吧?那获取somebody data的,这是他自己写的一个方法,至于他是从哪获取的,他在这个方法里面写的呢,可能是什么MY,可能是端口,对吧?啊,你通过那个骚的通信是不是可以拿端口数据啊,对吧?自己去用一个骚,然后去获取数据打印出来,这也可以,对吧?啊,端口的数据OK,那这块呢,它就获取封装成了一个E的。然后接下来你看这。他把这个干什么事?叫get China,还记得我们当时所讲的整个数据的流吗?接收数据封装成一,接下来呢?然后呢?这边是拦截器,这边是掺选择器,好,那这一块我们所写的代码,主要的我之前是不是提过写前面封装even以及跟chinapro打交道的。 
- 10:00 - 对不对,对吧,OK,那等会呢,我们就可以看一下这个方法,这个方法里边你就能看到拦截器,能看到select。选择器还能看到transaction。都在这个方法里边,因为接下来是不是由这个组件跟其他的这一系列东西打交道,对吧,最后真正的China选择器确定了,我这个数据要往哪个拆发送的时候,接下来他是不是要做事物啊。对吧,啊,做事物都在这个佛法里边啊,当他把这个传输完成之后,他做什么事。Ready就告诉我,哎,我还是可以继续干啥。传输,因为它这个返回值状态是什么C的,我们说了这个东西是不是一个被循环调用的方法。对吧,被循环调用了,你这不是start stop吗?啊,一个开始一个结束,中间这个方法被循环调用,因为你接收数据,获取数据,你这个source获取数据不是获取一次了。 
- 11:06 - 对吧,像那个我们说了director是500毫秒扫描一次那个文件夹呀,也就是说它这个方法500毫秒执行意思。我们自己也可以设计一下,哎,等会呢,我们在里边干什么,一秒钟来执行一次,那在里面加一个什么。滴泪对吧?哎,让他睡一秒钟就OK了啊,睡一秒钟就OK了啊,做这个事好,如果抓到异常了。如果说抓到异常了,看一下他做了什么事。返回。高,还记得干什么事呢?退吧啊,也就是说它呢,这个东西接下来不要往接下来那个拆里边去发啊,也就做这个事了啊,做这事吧,OK啊把这个艾热,至于打打不打印,我们自己写代码就无所谓了啊,就无所谓了啊,这里面呢,事物因为它是写在一个方法里面,事物它在这关闭的,它应该是把这个方法直接就写在这个里边了啊,我们这里边不涉及到事物,事物都在这个里边,到时候我们能看到啊,到们能看到,最后呢,把它这个状态返回,如果说他当前的状态还是。 
- 12:18 - Ready的,那就接着可以干什么去再去接收数据往China里边放啊,是做这个事啊,做这事的OK,那这个是我们核心的一个逻辑,主要的我们业务相关的是不是他。你怎么获取数据的问题吗?其他的这一套,你说大的逻辑上面能改吗?改不了啊,因为你把的封装好了,你就要传给什么了。能听懂。我们来捋一下啊,首先第一部分这个东西没得聊吧。人家说你要继承这个类,实现这两个接口,你能不继承不实现吗? 
- 13:00 - 不行吧,这是官方说的,就类似于你们之前写的map,你不继承那个map那个类,你能跟妈工作吗?工作不了了是一样的啊,这个东西没得聊,然后接下来我们要关注的是那个。这个方法。这个方法呢,就是跟我们之前所写的那个配置文件所打交道的方法,你能把里面所有的参数给它获取出来。我们不是之前配了很多的一个内容吗?对吧,这里面配我们看一下啊,诶关掉了是吗。呃,关了之后我们到这来看一下啊,在这。CD交吧,底呗。然后看了一下这个什么哦,随便找一个fair from这个这哎,在这个里面不是配了很多的参数吗。对吧,啊,配了很多参数,也就是说它是通过这个名字来获取到的。啊,通过这个名字来获取到的啊,获取到这个值当然有很多呢,内容呢,是不是里面默认什么30秒啊,那些东西不是有默认值吗?默认值它是这样来的,你给了一个什么default代码里边给了它默认值。 
- 14:06 - 啊,给了默认执照,这是我们要关注的关于配置文件的一个方法,接下来我们要关注的这个什么start end还是一样的,初始化一东西,或者关闭一些东西,对吧?啊,不太关心的,我们要关心的就是这个什么。Process方法,这个方法里边呢,它最核心的就是接收数据,封装成even,然后接下来将这个干什么。传出去就做这个事儿,这个就是我们自定义这块最核心的代码就在这。至于什么抓异常,什么这个返回back off,这个都是正常的一个操作啊,因为如果抓到异常了,你接下来就要退避一下啊,就这意思好,那我们这个呢,是整个的一个需求分析啊,我们这个获取数据呢,我们说了在里面呢,我们自己写一个负循环做这个事儿啊,负循环去做这个事儿啊,这个是整个的一个需求分析。 
我来说两句