package com.itlong.bjxizhan.support.web.job.base;

import com.itlong.bjxizhan.common.DbContext;
import com.itlong.bjxizhan.domain.pojo.Task;
import com.itlong.bjxizhan.support.web.service.StandardTaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.List; /**
* Created by shenhongxi on 2016/7/12.
*/
public class JobRunnable implements Runnable { private static final Logger log = LoggerFactory.getLogger(JobRunnable.class); private StandardTaskService standardTaskService; private List<Task> tasks; private String dbKey; private String tableIndex; @Override
public void run() {
if (tasks != null) {
try {
DbContext.setDbKey(dbKey);
DbContext.setTableIndex(tableIndex);
for (Task task : tasks) {
task.setTableIndex(tableIndex); // 1. 一个job的多个实例,谁先成功锁定任务,谁先处理任务,若处理失败则解锁任务
// 2. 对于1中解锁失败的,要利用另外的job来专门进行解锁
// 3. 将任务分成几批,并行处理
// 4. 这些任务的子任务分批串行处理,同样有锁定-处理-失败解锁
// 5. 对于4中解锁失败的,同样要利用另外的job来专门进行解锁
boolean locked = standardTaskService.lock(task);
if (!locked) continue; boolean result = standardTaskService.process(task); standardTaskService.finished(result, task);
}
} catch (Exception e) {
log.error("Do task error", e);
throw new RuntimeException("Do task error");
}
}
} public List<Task> getTasks() {
return tasks;
} public void setTasks(List<Task> tasks) {
this.tasks = tasks;
} public StandardTaskService getStandardTaskService() {
return standardTaskService;
} public void setStandardTaskService(StandardTaskService standardTaskService) {
this.standardTaskService = standardTaskService;
} public String getTableIndex() {
return tableIndex;
} public void setTableIndex(String tableIndex) {
this.tableIndex = tableIndex;
} public String getDbKey() {
return dbKey;
} public void setDbKey(String dbKey) {
this.dbKey = dbKey;
}
}

***:org.quartz.Scheduler提供了start, bystand等方法可以对Scheduler进行管控

大规模Schedule任务实现方案的更多相关文章

  1. loadrunner 场景设计-手工场景方案(Schedule)设计

    场景设计-手工场景方案(Schedule)设计 by:授客 QQ:1033553122 A.   定义方案schedule 在 Scenario Schedule面板中,选择一个方案schedule, ...

  2. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2

    loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2 ---------------------------接Part 1------------------------ ...

  3. 腾讯大规模Hadoop集群实践 [转程序员杂志]

    TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软件Hadoop和Hive进行构建,打破了传统数据仓库不能线性扩展.可控性差的局限,并且根据腾 ...

  4. 大规模Hadoop集群实践:腾讯分布式数据仓库(TDW)

    TDW 是腾讯最大的离线数据处理平台.本文主要从需求.挑战.方案和未来计划等方面,介绍了TDW在建设单个大规模集群中采取的 JobTracker 分散化和 NameNode 高可用两个优化方案. TD ...

  5. Loadrunder场景设计篇——定时器(schedule)

    A.   定义方案schedule 在 Scenario Schedule面板中,选择一个方案schedule,或通过点击New Schedule定义一个新的方案 定义schedule: a.新建sc ...

  6. 十六款值得关注的NoSQL与NewSQL数据库--转载

    原文地址:http://tech.it168.com/a2014/0929/1670/000001670840_all.shtml [IT168 评论]传统关系型数据库在诞生之时并未考虑到如今如火如荼 ...

  7. 腾讯TDW:大型Hadoop集群应用[转载]

    转自:http://www.uml.org.cn/sjjm/201508103.asp  作者:Uri Margalit 来源:InfoQ 发布于:2015-8-10 TDW(Tencent dist ...

  8. 编程语言的发展趋势by Anders Hejlsberg

    这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲. 编程语言的发展非常缓慢,期间也当然出现了一些东西,例如面向对象等等,你可能会想,那么我么这么多年的努力都到哪里去 ...

  9. 一文读懂MapReduce

    Hadoop解决大规模数据分布式计算的方案是MapReduce.MapReduce既是一个编程模型,又是一个计算框架.也就是说,开发人员必须基于MapReduce编程模型进行编程开发,然后将程序通过M ...

随机推荐

  1. Logstash安装搭建(一)

    Logstash是一个具有实时管道的开源数据收集引擎.可以动态地统一不同来源的数据,并将数据归到不同目的地.也是一个管理事件和日志工具.你可以用它来收集日志,分析它们,并将它们储存起来以供以后使用. ...

  2. JTable,TableModel,DefaultTableModel与AbstractTableModel的小结

    1 表格JTable并不存储自己的数据,而是从表格模型那里获取它的数据 2 TableModel本身是一个interface,在这个interface里面定义了若干的方法,包括了存取表格字段(cell ...

  3. Vim插件之Command-T使用问题

    最近在使用vim插件CommandT时出现问题其实就是vim没有支持ruby,不过google之后找到了解决方法,老外的态度还是很让人敬佩的,度娘搜索的结果太让人呕心了.. 贴下,以后再次遇到解决. ...

  4. 连接pgsql

    package com.jpzhutech.select; import java.sql.Connection; import java.sql.DriverManager; import java ...

  5. js生成缩略图后上传并利用canvas重绘

    function drawCanvasImage(obj,width, callback){ var $canvas = $('<canvas></canvas>'), can ...

  6. 3-Dom

    HTML DOM 对象DOM DocumentDOM ElementDOM AttributeDOM Event Document对象 每个载入浏览器的 HTML 文档都会成为 Document 对象 ...

  7. mysql中timestamp的自动生成与更新

    转自:mysql中timestamp的自动生成与更新 MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样.1.自动UPDATE 和INSERT 到当前的时间:表:----------- ...

  8. php函数搜集

    数组去重: 方法1:php自带此功能的函数array_unique($arr) 方法2:$arr = array_flip(array_flip($arr)); //这样便可以删除重复元素. 比上面的 ...

  9. 关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解

    1. http://bbs.wuyou.com/forum.php?mod=viewthread&tid=303679&fromuid=396698

  10. 怎么给当前点击的a标签添加一个样式(跳转页面后)

    怎么给当前点击的a标签添加一个样式(跳转页面后): 方法1. 用cookie记录这个打开的序列号,然后页面在跳转的时候在读出来.方法2. 循环a的链接,然后与location.href去比对,如果相同 ...