美文网首页
任务调度器

任务调度器

作者: 北京黄小胖 | 来源:发表于2020-03-26 15:04 被阅读0次

Quartz Scheduler

开源任务调度框架,

simple use

1.注册Job

  • 方式1,实现job接口,通过JobDetailFactoryBean注册,JobDataMap传送参数
public class SimpleJob implements Job {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
    }
}
  • 方式2,通过 MethodInvokingJobDetailFactoryBean 注册,指定job类和执行的方法
@Component
public class SimpleService {
    public void exec(){
        System.out.println("SimpleService业务方法执行...." + ",线程号:"+Thread.currentThread().getName());
    }
}

2.注册trigger,

  • SimpleTriggerFactoryBean简单trigger注册(简单定时循环)
  • CronTriggerFactoryBean注册(自定义cron公式,自定义定时方式,秒 分 时 DayofMonth Month DayofWeek Year)

3.注册scheduler

  • SchedulerFactoryBean


spring注解Scheduled 模式

  1. 开启注解 EnableScheduling
  2. 配置线程池---触发器和任务共用的
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
   return Executors.newScheduledThreadPool(10);
}

3.注解@Scheduled(cron="0/5 * * * * ?")



E-JOB模式

基于Quartz为基础,zookeeper做协调的分布式任务调度框架

  • 注册的监听需要实现ElasticJobListener 监听接口
  • 注册异常处理需要实现JobExceptionHandler 接口

常用参数简介

  • cron
  • shardingTotalCount 分片总数
  • shardingItemParameters 分片参数
  • listener 监听
  • jobExceptionHandler 异常处理
  • misfire 是否开启错过的任务重新执行
  • jobParameter 作业自定义参数
@ElasticJobConf(name = "simpleEJob", cron = "0/2 * * * * ?",
        shardingItemParameters = "0=beijing|shanghai|tianjin,1=shanghai", shardingTotalCount = 2,//分片
        listener = "com.hy.ejob.handle.TestSimpleListener", jobExceptionHandler = "com.hy.ejob.handle.TestSimpleExceptionHandle"
        )
public class TestSimpleJob implements SimpleJob {
    public void execute(ShardingContext shardingContext) {
//        System.err.println(shardingContext.toString());
        System.out.println(String.format("【%s】执行,参数【%s】", shardingContext.getJobName(), shardingContext.getShardingParameter()));
    }
}
![xxl-job.png](https://img.haomeiwen.com/i9640064/61208319c0787da2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


XXL-JOB

一款基于spring、Quartz、netty、mysql的分布式任务调度框架(文档很详细)

源码仓库地址 Release Download
https://github.com/xuxueli/xxl-job Download
http://gitee.com/xuxueli0323/xxl-job Download

源码执行过程

  • ThreadPoolExecutor线程池执行任务,XxlJobTrigger.trigger
  • processTrigger
  1. save log-id 保存日志,返回日志id
  2. init trigger-param 初始化触发器的参数
  3. init address 初始化任务执行地址
  4. trigger remote executor,获取ExecutorBiz 执行run,xxlRpc通过netty,调用实现的jobbean,执行任务
  5. collection trigger info 组装执行结果
  6. save log trigger-info 保存执行结果日志
xxl-job架构图

相关文章

  • 分布式调度器Quartz解读

    术语: scheduler:任务调度器 job: 被调度的任务 trigger:触发器,用于定义Job调度时间规则...

  • 分布式任务调度系统设计

    一、思路 任务调度器、任务执行器、任务 任务调度器不关心业务逻辑,只关心任务的触发策略、失败策略、路由策略、阻塞处...

  • 任务调度器

    题目描述:给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种...

  • 任务调度器

    Quartz Scheduler 开源任务调度框架, simple use 1.注册Job 方式1,实现job接口...

  • 定时任务框架Quartz

    定时任务框架! 定时任务就是分为三个模块:任务、触发器、调度器 过程就是,调度器协调触发器来再固定时间去触发任务!

  • Quartz简单使用

    基础概念 Scheduler - 与调度器交互的主要API。 Job - 需要被调度器调度的任务必须实现的接口。 ...

  • 模拟kafka时间轮

    延迟功能调度器 时间轮 槽(任务列表) 任务 测试

  • Quartz任务调度器

    Quartz任务调度器 与spring的整合 核心概念 1.scheduler是一个计划调度器容器,容器里面可以盛...

  • 任务调度器学习

    Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工...

  • 队列--任务调度器

    给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的...

网友评论

      本文标题:任务调度器

      本文链接:https://www.haomeiwen.com/subject/irdcuhtx.html