高级篇 II: 作业的执行
来源:互联网 发布:等离子数控切割机编程 编辑:程序博客网 时间:2024/06/05 19:17
上一篇中,提到createJobDetail 方法,通过LiteJob代理quartz中的Job。
因此,后续quartz定时调度执行作业,入口在LiteJob:
首先,进入的getJobExecutor方法,发现这里使用了工厂模式,生成不同作业的executor:
各个executor的类间继承关系,如下:
子类都实现抽象类中的process方法
接着,进入execute方法,方法的大致逻辑如下:
显然,可以看到在抽象类中,定义了作业执行流程层面的一些逻辑,如执行前、执行后调用 作业监听器。
作业的执行,最终调用到的是各个作业类型对应的executor中的process方法:
simple类型作业的executor
process方法,直接就是调用SimpleJob接口中的execute方法
dataflow类型作业的executor
process方法中分两种情况:
(1)非流式处理时,最终只会调用DataFlowJob中的processData方法
(2)需要流式处理时,则是在streamingExecute方法中,前后依次调用 DataFlowJob中的 processData方法 和 processData方法
那么,再关注另外一个问题, 即 含有有多个分片时,作业是如何执行的?
下面的代码表明,多个分片时,是放到线程池中并发执行的(这里采用的 谷歌 guava的线程池,该线程池的相关内容,以后其它博文中再做阐述),并通过CountDownLath做同步。
阅读全文
0 0
- 高级篇 II: 作业的执行
- 高级篇 III: 作业的分片
- 数据库作业的执行
- 高级篇 I: 作业的配置、注册、调度
- 查询作业的执行状况
- 组合式MapReduce作业的执行
- 作业不再执行的解决方案
- 高级程序设计语言2的作业有点难
- 《高级计算机图形学》大作业的报告
- SQL Server2005作业执行失败的解决办法
- 获取作业的执行结果历史记录
- SQL Server 作业执行失败的解决办法
- Kettle 作业步骤循环执行的实现
- 通过 脚本执行 kettle 的作业 命令
- kettle调试远程执行的作业
- MaxCompute执行作业慢的原因排查
- 识别执行中的作业正在执行的SQL
- 我的高级win32API作业(附我的答案)
- C# 更新Excel
- C3 粒子闪烁效果
- jmeter性能测试,基于scf框架的"java请求"接口封装、环境配置与测试
- PyCharm设置
- 菜鸟前端日记10 (原生JS--数组的操作方法)
- 高级篇 II: 作业的执行
- Makefile赋值符号的使用——"=" ":=" "?=" "+="
- 解决inteijj Idea 编辑器中 @Override 报错问题
- Swift与JS交互
- Spark Streaming---HDFSwordcount
- 如何使用TensorFlow追踪千年隼号
- 正则表达式要点(简要)
- 后起之秀百度云为何能在竞争激烈的云市场上打响进攻战
- 哪几种方式可用来实现线程间通知和唤醒