00:00
好,那第二个我们再来看一下自定义的think,其实它跟source需求是一样的,Source不够用了,那s think这边我们公司当中系统也比较启发,我就要往这个系统当中写,对吧?我假如说就监控一个本地的文件,或者说从端口当中获取一个数据,是不是可以用ne或者用跳source,但是呢,我写出去我是一个很奇怪的系统,你比方说MY搜,它没有提供说MYS的一个think,对吧,那这个时候我们需要又要去干什么,自定义对吧?啊,又要去自定义啊,那这个当中呢,我们就不聊了,因为这个当中是这样的东西啊,就是说现在提供有很多对吧,但是呢,我们还是需要自己去定义啊,自己去定义啊,它呢一样的啊,在这个官方的,在这我们来看一下这边有一个什么think,哎,他呢要继承abstract think,然后呢实现comfortable。
01:00
然后呢,它里面也有这个配置信息,那这个配置信息我们知道干什么用的了。是不是读取我们自己的写好的这个配置文件用的呀,对吧,封装它代码当中的一些属性啊,跟source是一样的,那接下来还有一个star现在语言啊,然后呢,还有最核心的是不是那个process方法,所谓的这个process叫处理方法,对吧?那这个里边注意它比那个S要复杂了,因为这边啊。数据是不是从S主动拉取的,主动拉取过来对吧,所以说事物这个地方呢,要自己去写了。啊,你要自己写详细的开启事物关闭提交回滚,抓到异常之后回滚啊,这个事物要自己写,我们可以看一下啊,首先呢,它在里边先获取了所谓的这个什么China啊,因为已经到S这边了,说明都已经经过了所S组了,已经到S了,对吧?S拉取数据,然后从China当中去获取。
02:06
15,然后开启,15开启事物之后就开始发生了。拆了。就要准备抓异常了呀,对吧,然后呢,哎,在异常当中,我们去尝试从参当中去获取tap。去干什么事了,抓数据了呀,对吧,啊去抓数据了好,然后如这边看啥store主要方法叫store some data,就是你把事件抓到了,你应该做成日语,你保存出去,假如说你要写到MYSL,那你就调用JDBC,是不是写出去就好了,对吧,存储出去,然后呢,哎,存储中间没有异行干什事。提交啊,提交好以后呢,干什么事,Ready啊,又准备好了,对吧,还是一样的,它这个process方法呢,都是返回status啊,那如果抓到异常,那肯定反回什么back off啊,Back off啊,其实这里边呢,它少写了一些东西,就这个官方设例当中,应该我们还得加一个final去关这个事,15需要关闭,对吧,你前面要开启失误,无论是回滚结束的还是正常commit提交结束的这个事物都要干什么关闭,所以说呢,我们应该还要加一个finally,最后呢,去关事物啊,去关事物,抓到异常就回滚,没抓到异常正常的流程当中是commit,但不管是commit还是run back,那我们都要close。
03:31
对吧,都要去给它关掉啊,所以说这个关程当中呢,他少写了一点东西,等会我们自己要给它补充上,好,那下来呢,这是需求说明啊,然后呢,我们再去实现我们的代码这个类啊叫think点叫my think啊,那么的需求呢,我们就这样啊,嗯,比较简单的随便挑一个source对吧,它呢继成这个内容,最后呢,我们使用在访台输入,就是说用一个ne cat source对吧,从端口接入数据,然后呢,China啊,普通的China,然后加一个这这输出,我们给他输出到控制台,也给他加前缀后缀输出可以吧,啊,也加一个前缀,加一个后缀,还是一样的方式啊,还是一样的方式,当然你也可以做什么事情呢,都这样子。
04:17
你用自定义的S去给自定义的think画出去啊都行啊都行,那如果这样的话就加了两次进。对吧,Source里面封装的时候加了一次,这个的时候我们获取出去,最后做打印的时候,这个东西呢,我们把它打印到后制台啊,打印到后制台啊,然后呢,有来了一次,对吧?啊,可以啊,这样是可以的,因为我们之前说过,只要你source China think有这个东西,随意组合,A组合,不管是自定义的对吧?三个内容都自定义都可以啊,包括里边我们看到China选择器是不是都可以自定义啊,对吧?所有的组件都支持自定义啊,但是有的组件呢,其实比较少去自定义,自定义最多的是我们之前说的intercept,好,这个东西是在工作中会用到啊,然后接下来呢,我们去完成这个事情啊,它呢要刚才我们看到要继承一个抽象的think,以及实现comfortableable,对吧?啊,这个接口,然后呢,导包还是from包下的,然后呢,这个内容在这上面啊,大家回车直线相应的方法,我刚才看说了是不是那个。
05:29
啊,根本就没有对吧,我们拿到这来好,那我们按照之前的去改一改啊,我们把这个拿过来就行了。前后缀对吧,然后呢去获取那它就行,在这我就直接粘过来对吧?啊直接用,呃,前面呢,我们还是加了free啊好,那核心的我们要去写这个process方法。啊,在这个方的方法里边要写东西了,嗯,来看一下,这样我们从官方呢,因为这里边好像比较复杂对吧,那我们做这个事情来。
06:07
抠一个什么抠个图啊来在这首先呢,他要去干什么,他先声明了一个状态信息对不对,对吧?好,那我们跟他一样的,其实最后不声明我直接返回行不行啊,没掉我不这样返回这个赋值,然后最后返回对吧?啊,这个声没声明无所谓啊好,那我们更重要的是获取。China开启事物对吧?好,那那边呢,第一步获取China并开启15,那这个呢,就直接叫干China,得到我们的China,只不过人家命名叫C,这个无所谓吧,然后接下来呢,从China当中去获取事点这transaction啊,W得到一个transaction,然后呢,我们去开启事trans.stop你看这里边啊,有begin。
07:04
就开始对吧,还有一个close,主要的有这四个方法啊,开启事,然后接下来是不出开始啊,第二步从China中抓取数据,打印到控制台对吧,打印到控制台好,那接下来呢,我们去这边呢,我们就按照他写的,是不是写一个串呀,这后面是不是有catch catch里边呢,应该是except,那我们就写大一点,我们就直接写一个except,最后是不是还有我们刚才提到了finally,对吧?啊,最后有一个finally啊呃,Finally里边呢,我们。知道要干什么事点对吧,我们把这个先写上啊,然后开当中,这个里边是不是先去抓取数据啊,对吧,这边说了从China中获取数据给你打印到后台,那我们先呢抓取数据,抓取数据呢,从China当中take对吧?China当中点take,咱们得到一个。
08:14
诶,我是点到那边去了,获取我们的事件信息啊,获取我们的事件信息,那大家想啊,这个事件信息有没有可能一批一批,这个是单个的啊,你看返回值吗。有没有可能没有数据呢,空的呢,对吧?啊,为了防止这种情况的一个发生,我们可以对这个代码怎么稍微的改一下。来看啊,我把这个声明放外面,然后在这外,哎,这应该加一个分号对吧,Y数even等于它,哎多了一个等于什么,然后接下来if不等于,那我们就干什么事。
09:23
能看到这块代码,就是说抓取不到数据,我一直尝试着去抓取,直到什么有数据我再往下处理对吧?啊,其实我们不这样做也行,你就判断如果等于not,那你就不输出了呗,就类似于像那个我们看到的刚才SS那边,它是不是直接为ten掉对吧?一样的也可以,这个都是多种方法啊,随便啊好,那将来抓取到一分之后,然后呢,我们获取到实践信息了,接下来是不是处理数据啊啊处理事件对吧?呃,那处理事间呢,我们刚才说了要把它打印到控制台,那正好这块再讲一个,大家都知不知道那个类似于log forg啊,或者类似于这样东西,它可以打印到控制台,或者说写到文件当中,还有info,还有AR,还有debug,还有那个什么warning日志,它是怎么出来的?
10:16
它其实有一个log对象,它需要用一个log对象,那我们用这种方式来处理这个数据,来看一下啊,首先在外面呢,我们要去创建log对下啊logo下,那private对吧,叫log啊,叫log,我看一下log啊,嗯,然后呢,我们有一个log,等于它用的是log factor。工厂我看一下用这个米log,嗯,不,我看一下有没有这个不是是log错啊对,是这个啊啊点盖log,它里边要传一个字符,传的名字,或者说要传一个大的对象。
11:10
对吧,那一般来说哪个类打印数据就用哪个类,自己这个class对象,哎,我前面这个导包应该错了啊。嗯,应该这个包打错了是吧?对,他俩包应该一样,工厂的跟包一样,刚才打错了,用那的包,那之后呢,我们就可以拿着这个log对象点,你看啊,你所熟悉的ino有没有点A有没有,对吧?你调用哪一个方法,就你调用for方法,它打印的是值,你调用L方法,它打印的是L,当然除了我们所熟悉的,大家所熟悉的是不是in for z a,还有其他的级别呢。还有第八个,还有比L还严重。
12:01
这个什么意思啊?糟糕的致命的人,它比error的级别还要高啊,也就是说,如果你打印日志的级别设置为串,它连L日志都不打印了,就是如果说你日志级别设置为debug,它所有日志都能看不到。Deb级别相当于最低的啊,是这个意思,那我们正常的用什么port就行了,它里边要一个,那我们even,那们body不对,我们要内容呢,那我们又一个对even的点get body之前我们是不是这样做的,对吧?但是呢,我们要知道是不是还要加前缀加后缀啊对吧?好,那在这pre拼接上,然后在这个后面再加上一个什么啊,我们给它拼接一点前缀和后缀啊,拼接一点前缀后缀,好,那在这个过程当中,我们就可以去正常的提交事物了,对吧?那你看啊,他是不是处理完之后提交事误,然后返回。
13:05
Ready对吧,好,那在这块我们写一下啊提交数。点啊呃,然后接下来呢,我们这样,我们没有写声明,我们是不是在这返回就好。返回麦吧,因为他正常走的,我接着下一次又可以接着进行拉取数据了,对吧?啊,如果抓到异常,抓到异常首先干什么事?回滚对吧,回滚那就拿着这个trans.back back这边我们应该反问什么?了,嗯,坏了吗?对吧,你就先退避一会,就类似我们之前说的,假如说有多个S在用的时候,你呢,这块发出去没发出去事物都失败了,我是不是应该退理一后,接下来不让你去拉取数据了,对吧?是这个意思啊好,那接下来呢,这块没有用了,对吧?最后close放在这啊,主要放这行,这是我们所看到的整个这个过程啊,这是自定义think的一个编码啊,自定义think。
我来说两句