Fuguo-job

来自ling
跳转至: 导航搜索

模块功能与描述

  • 平台基础模块中的任务调度模块,以spring quartz为基础搭建,主要负责定时任务调度,定时批量数据处理
  • 支持页面端任务配置,任务启动与暂停,支持任务调试,节假日设定,调度服务监控

依赖

fuguo-core spring quartz

quartz基础知识

  • Quartz.init.sequence1.jpg
  • Quartz.init.sequence.jpg
  • Quartz.init.sequence.flow.jpg

系统的结构

系统对任务的定义

Pl.job.class.diagram.png

对quartz机制的使用和初始化

Pl.job.init.jobtoquartz.sequnece.png

心跳进程

Pl.job.init.heartjob.sequnece.png

数据库任务监听

Pl.job.taskjob.sequnece.png

表和model设计说明

dao设计说明

server设计说明

view设计说明

utils设计说明

示例代码

常见问题

获取配置参数

        JobDataMap jobDataMap=context.getJobDetail().getJobDataMap();
        String targetUser=jobDataMap.getString("targetUser");
        String sql="select * from base_USER where USERNAME_=?";
        List<Map<String,Object>> users=this.getJdbcTemplate().queryForList(sql, new Object[]{targetUser});
        if(users.size()>0){
            System.out.println("用户"+targetUser+"的中文名为:"+users.get(0).get("CNAME_"));
        }
  • 立即执行是用于测试用的,没有直接获取参数的方法,但可以通过IJobDefinitionService中Collection<JobParameter> loadJobParameters(String jobId);方法先用,后面再添加

可立即中断任务

  • 实现InterruptableJob接口替换Job接口
  • 添加static变量private static Thread thisThread;
  • 执行方法中获取到当前线程
	@Override
	public void execute() throws JobExecutionException {
		thisThread = Thread.currentThread();
	}
  • 实现中断方法
	@Override
	public void interrupt() throws UnableToInterruptJobException {
		if (thisThread != null) {			
			System.out.println(thisThread.getId()+" name:"+thisThread.getName());
			thisThread.stop();
		}
	}

快速链接

Fuguo-job 指定服务器运行 如何配置一个job

配置文件说明

  • ling2.jobApplicationName