文档章节

Azkaban的定时调度任务分析34:定时执行下文

强子大叔的码田
 强子大叔的码田
发布于 2016/04/12 15:52
字数 323
阅读 924
收藏 0

下面说线程azkaban.trigger.TriggerManager.TriggerScannerThread是如何运作的

1)初始化

stop in azkaban.trigger.TriggerManager$TriggerScannerThread.xxx

run

初始化的上下文是:

java.lang.Exception

at azkaban.trigger.TriggerManager$TriggerScannerThread.xxx(TriggerManager.java:187)

at azkaban.trigger.TriggerManager$TriggerScannerThread.<init>(Trigg

Step completed: erManager.java:191)

at azkaban.trigger.TriggerManager.<init"thread=main", azkaban.trigger.TriggerManager$TriggerScannerThread.xxx(), line=188 bci=10

>(Tri188    }


ggerManager.java:67)

at azkaban.wemain[1] bapp.AzkabanWebServer.loadTriggerManager(AzkabanWebServer.java:275)

at azkaban.webapp.AzkabanWebServer.<init>(AzkabanWebServer.java:199)

at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:723)

=======================================================================================

2)线程的具体运行

stop in azkaban.trigger.TriggerManager$TriggerScannerThread.run


stop in azkaban.trigger.TriggerManager$TriggerScannerThread.checkAllTriggers


stop in azkaban.trigger.TriggerManager$TriggerScannerThread.onTriggerTrigger


---另外要注意:

long scannerInterval = props.getLong("trigger.scan.interval", DEFAULT_SCANNER_INTERVAL_MS);

runnerThread = new TriggerScannerThread(scannerInterval);

设置了查看周期,默认值竟然是

public static final long DEFAULT_SCANNER_INTERVAL_MS = 60000;

竟然有1分钟。。。

果然修改此值


然后继续研究,发现

private void onTriggerTrigger(Trigger t) throws TriggerManagerException {

 

List<TriggerAction> actions = t.getTriggerActions();

for (TriggerAction action : actions) {

try {

logger.info("Doing trigger actions");

System.out.println("action*************************************:" + action);

action.doAction();//重点来了!!!

} catch (Exception e) {

logger.error("Failed to do action " + action.getDescription(), e);

} catch (Throwable th) {

logger.error("Failed to do action " + action.getDescription(), th);

}

}

if (t.isResetOnTrigger()) {

t.resetTriggerConditions();

t.resetExpireCondition();

} else {

t.setStatus(TriggerStatus.EXPIRED);

}

try {

triggerLoader.updateTrigger(t);

} catch (TriggerLoaderException e) {

throw new TriggerManagerException(e);

}

}

如果屏蔽这行,exec就不会执行任务!

action的代码是azkaban.trigger.builtin.ExecuteFlowAction

============================================================

通过这里加代码观察

然后观察打印出来的日志:

正好验证了我的想法!因为我的任务也是6秒为周期!

==================================================================================

stop in azkaban.trigger.builtin.ExecuteFlowAction.doAction

run

==================================================================================

总结:定时把一个任务放入到web的一个queue中,而一次性任务则是放置1次!

© 著作权归作者所有

强子大叔的码田

强子大叔的码田

粉丝 910
博文 1439
码字总数 1221048
作品 9
南京
架构师
私信 提问
Azkaban的定时调度任务分析33:定时执行上文

之前,我们研究了执行1次的任务,但是实际生产环境中,我们可能需要很多个定时调度的需求, 所以,接下来,我们来研究定时调度的原理! ==================================================...

强子哥哥
2016/04/12
432
0
基于Azkaban的任务定时调度实践

本文由云+社区发表 作者:maxluo 一、Azkaban介绍 Azkaban是LinkedIn开源的任务调度框架,类似于JavaEE中的JBPM和Activiti工作流框架。 Azkaban功能和特点: 1,任务的依赖处理。 2,任务监控...

腾讯云加社区
03/14
0
0
大数据教程(13.3)azkaban简介&安装

上一节介绍了Flume多个agent连接配合使用。本节博主将为小伙伴们介绍azkaban的相关概念、简单的安装使用。由于azkaban使用新版本太耗时间,需要编译安装,所以博主此次就使用编译好的老版本2...

em_aaron
03/08
129
0
强子哥哥/MyAzkaban

#MyAzkaban Azkaban是由Linkedin开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。 Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一...

强子哥哥
2016/04/15
0
0
Azkaban、Xxl-Job与Airflow对比分析

概述 Xxl-Job 简述 XXL-JOB是一个国内轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。基于Java技术栈,调度中心与执行器通信基于作者另一个开源项目xxl-r...

centychen
04/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
25分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
27分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
30分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
30分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部