quartz定时任务相关后台代码及注意点

公司内网,纯手打总结,若出现拼写错误,欢迎指出评论,必及时更新错误。

quartz主要结构 :

  • 调度器:Scheduler
  • 任务:JobDetail
  • 触发器:Trigger,包括SimpleTrigger和CronTrigger    两种不同均会写个demo

添加完相关依赖后可在后台跑shell脚本语言,传递参数,定时启动quartz任务。

1.Demo:

public class Start{

    public static void main(String[] args) throws SchedulerException, InterruptedException {
        // 1、创建调度器Scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();


        // 2、创建JobDetail实例,并与Job类绑定(Job执行内容)
        JobDetail jobDetail = JobBuilder.newJob(AppJob.class)withIdentity("hadoop", "app_job").build();
        // 3、创建触发器Trigger实例,每隔1s执行一次
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("hadoop", "app_job")
                .startNow()//立即生效
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(1)//每隔1s执行一次
                .repeatForever()).build();//一直执行

        //4、执行
        scheduler.scheduleJob(jobDetail, trigger);
        System.out.println("--------scheduler start ! ------------");
        scheduler.start();

        //睡眠
        TimeUnit.MINUTES.sleep(1);
        scheduler.shutdown();
        System.out.println("--------scheduler shutdown ! ------------");


    }
}

public class AppJob implements Job{

@Override

public void execute(JobExecutionContext jobExecutionContext){

}

}

2.自定义定时时间

  很简单,创建cron表达式,重写demo上述的触发器

  //创建cron表达式  以下是每五分钟执行一次,具体可百度 在线cron表达式
ScheduleBuilder appScheduleBuilder = CronScheduleBuilder.cronSchedule("0 0/5 * * * ?");

Trigger trigger = TriggerBuilder.newTrigger().withIdentity("hadoop", "app_job")
                .startNow()//立即生效
                .withSchedule(appScheduleBuilder )
                .build();//一直执行

 

3.quartz传递参数至Job中

在main方法里的jobDetail下添加

JobDataMap appJobDataMap = appJobDetail.getJobDataMap();

appJobDataMap .put("args",args);

然后在job中获取该参数

String[] args = (String[])jobExecutionContext.getJobDetail().getJobDataMap().get("args");

 

 

------木得了 有机会再更新-----

你可能感兴趣的:(quartz,java)