Elastic-Job 使用篇

在基础篇中,搭建用例环境,并运行时,控制台有如下输出:

 

聪明的你,估计会咧嘴一笑,嘿嘿嘿,貌似elastic-job-lite 支持不同的任务类型哈!!

对此,我只能说,兄台你真是天资聪慧,恭喜你猜对鸟。。。。。

 

那么,elastic-job-lite 究竟支持哪些任务类型呢?

参照http://dangdangdotcom.github.io/elastic-job/elastic-job-lite/01-start/dev-guide/,大致有有如下三种类型:

a. Simple类型作业

意为简单实现,未经任何封装的类型。需实现SimpleJob接口。该接口仅提供单一方法用于覆盖,此方法将定时执行。与Quartz原生接口相似,但提供了弹性扩缩容和分片等功能

b. Dataflow类型作业

Dataflow类型用于处理数据流,需实现DataflowJob接口。该接口提供2个方法可供覆盖,分别用于抓取(fetchData)和处理(processData)数据。

流式处理

可通过DataflowJobConfiguration配置是否流式处理

流式处理数据只有fetchData方法的返回值为null或集合长度为空时,作业才停止抓取,否则作业将一直运行下去; 非流式处理数据则只会在每次作业执行过程中执行一次fetchData方法和processData方法,随即完成本次作业。

如果采用流式作业处理方式,建议processData处理数据后更新其状态,避免fetchData再次抓取到,从而使得作业永不停止。 流式数据处理参照TbSchedule设计,适用于不间歇的数据处理。

c. Script类型作业  (这个我们后端应该用到的地方不多,后续就不详细介绍了,此处一笔带过

Script类型作业意为脚本类型作业,支持shell,python,perl等所有类型脚本。只需通过控制台或代码配置scriptCommandLine即可,无需编码。执行脚本路径可包含参数,参数传递完毕后,作业框架会自动追加最后一个参数为作业运行时信息。

 

由于,我们后端使用Script作业类型,估计需求不是很大,因此此处就一笔带过。

 

首先,了解下用例中用到的四个参数的含义

接下来,结合我们在“基础篇”中搭建的用例环境,详细了解下前两种类型作业。

(1)Simple类型作业

a、配置 application.yml 中的

b、上述配置,在com.dangdang.ddframe.job.example.config.SimpleJobConfig的 simpleJobScheduler 方法中用到,用于装配 simple类型作业的调度器

      调度器构造中,用到了 具体的 simple类型作业 对象  SpringSimpleJob,实现 elastic-job-lite 的 SimpleJob 接口

excute方法,做具体的 作业处理逻辑

(2)Dataflow类型作业

a、配置 application.yml 中的

b、上述配置,在com.dangdang.ddframe.job.example.config.DataflowJobConfig的 dataflowJobScheduler方法中用到,用于装配 dataflow类型作业的调度器

    调度器构造中,用到了 具体的 dataflow类型作业 对象   SpringDataflowJob, 实现 elastic-job-lite 的 DataflowJob接口

fetchData方法和processData方法的具体作用,请参见本文前半部分,对DataFlow类型作业的描述。

用例环境中,Dataflow类型作业,在构建相关配置时,选择使用了“流式处理”,如下代码:

因此,SpringDataflowJob类中,processData方法中,使用  更新其状态,避免fetchData再次抓取到,从而使得作业永不停止。

 

综上,基本描述清楚了,如何构建两种作业类型,以及使用的一些注意点。

 

下面,再提一下,如何对作业运行进行监听。

监听的目的,是想在作业运行前后,进行相关的一些业务操作,比如进行某些业务统计,统计完成后给相关人员发邮件通知他们。

以用例环境中的 simple类型作业为例,对该作业进行监听,如何添加监听器呢?

(1)新增一个监听器类 MyElasticJobListener,具体如下

beforeJobExecuted,在作业执行前执行,打印作业相关信息;

afterJobExecuted,在作业执行前执行,打印作业相关信息;

(2)com.dangdang.ddframe.job.example.config.SimpleJobConfig 中,getLiteJobConfiguration 方法进行如下修改:

(3)运行 com.dangdang.ddframe.job.example.SpringBootMain,控制台会有类似如下输出:


关于作业监听器,如果我的唧唧歪歪说的不够清楚,你也可以自行参考官方文档 http://dangdangdotcom.github.io/elastic-job/elastic-job-lite/02-guide/job-listener/

 

OK,本文噼里啪啦一阵说完,估计应该大体描述清楚了,如何根据需要创建不同类型任务,以及如何对任务进行监听。


但是,对于elastic-job-lite底层代码是如何撰写,如何实现各种相关功能的呢?

对于这些底层深挖的东东,我们不妨先歇一歇,放在 后续的 高级篇 中详述。


猜你喜欢

转载自blog.csdn.net/baogang409/article/details/77115335