Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間)

  • quartz_Cron表達式一分鐘教程
     09-05
  • quartz定時任務中經常使用的cron表達式
     05-08
  • Quartz2實現任務的臨時啓動/暫停/恢復
     05-17
  • quartz 獲取正在執行的任務
     12-20
  • 在spring中實現quartz的動態調度(開始、暫停、中止等)
     09-04
  • SpringQuartz定時任務的cron表達式書寫
    09-17
  • 定時任務Quartz_之_cron表達式(時間表達式)
     07-18
  • 查看Quartz 調度任務 job 的狀態
     02-07
  • Quartz-基礎
     06-25
  • spring quartz 根據開始時間 結束時間 動態設置任務
     08-28
  • Quartz任務調度原理簡析
     05-30
  • Quartz_Cron表達式_每週、每個月執行一次
    09-04
  • 獲得quartz中Job的執行狀態
     11-09
  • quartz定時:修改時間及時生效的定時任務
    08-16
  • Quartz任務調度的Cron表達式
     09-30
  • cron表達式(Quartz中的使用)
     01-03
  • quartz_時間表達式之Cron表達式詳解
     08-16
  • quartz中cron表達式
     10-25
  • quartz任務中止最佳實踐方式
     03-06
  • Spring+Quartz 實現任務動態管理監控
     12-20
  • Quartz-中斷正在執行的任務
     11-15
  • spring-boot+quartz的CRUD動態任務管理系統
     04-03
  • Quartz_Cron表達式(定時任務)
     05-11
  • java時間操做
     05-31
  • TimeUtil工具類
     12-04
  • 隨機生成日期
     12-11
  • quartz2.x的動態管理類
     12-07
  • 去除節假日,週末,獲取當月的工做日
     06-05
  • java_日期的操做彙總
     11-03
  • DateUtil
     06-06
  • cron表達式獲取上次執行時間和下次執行時間
     12-28
  • POI導出excel表格優化
     10-15
  • java_時間處理
     12-04
  • JAVA獲取某段時間內的全部日期
     10-11
  • 逐頁緩存查詢(串行,避免OOM)導出Excel,zip壓縮
     07-31

Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間)


本案例採用quartz-2.2.3.jarphp

入門案例,執行比較簡單的任務html

QuartzManager.java  (任務的管理)前端

  1.  
    import java.text.ParseException;
  2.  
    import java.text.SimpleDateFormat;
  3.  
    import java.util.ArrayList;
  4.  
    import java.util.Date;
  5.  
    import java.util.List;
  6.  
     
  7.  
    import org.quartz.CronScheduleBuilder;
  8.  
    import org.quartz.CronTrigger;
  9.  
    import org.quartz.JobBuilder;
  10.  
    import org.quartz.JobDetail;
  11.  
    import org.quartz.JobKey;
  12.  
    import org.quartz.Scheduler;
  13.  
    import org.quartz.SchedulerException;
  14.  
    import org.quartz.SchedulerFactory;
  15.  
    import org.quartz.Trigger;
  16.  
    import org.quartz.Trigger.TriggerState;
  17.  
    import org.quartz.TriggerBuilder;
  18.  
    import org.quartz.TriggerKey;
  19.  
    import org.quartz.TriggerUtils;
  20.  
    import org.quartz.impl.StdSchedulerFactory;
  21.  
    import org.quartz.impl.triggers.CronTriggerImpl;
  22.  
     
  23.  
    public class QuartzManager {
  24.  
     
  25.  
    private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
  26.  
    private static String JOB_GROUP_NAME = "MY_JOBGROUP_NAME";
  27.  
    private static String TRIGGER_GROUP_NAME = "MY_TRIGGERGROUP_NAME";
  28.  
     
  29.  
    /**
  30.  
    * @Description: 添加一個定時任務,使用默認的任務組名,觸發器名,觸發器組名
  31.  
    * @param jobName
  32.  
    * 任務名
  33.  
    * @param cls
  34.  
    * 任務
  35.  
    * @param time
  36.  
    * 時間設置,參考quartz說明文檔
  37.  
    */
  38.  
    @SuppressWarnings({ "rawtypes", "unchecked" })
  39.  
    public static void addJob(String jobName, Class cls, String cron) {
  40.  
    try {
  41.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  42.  
    JobDetail job = JobBuilder.newJob(cls).withIdentity(jobName, JOB_GROUP_NAME).build();
  43.  
    // 表達式調度構建器
  44.  
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  45.  
    // 按新的cronExpression表達式構建一個新的trigger
  46.  
    Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
  47.  
    .withSchedule(scheduleBuilder).build();
  48.  
     
  49.  
    // 交給scheduler去調度
  50.  
    sched.scheduleJob(job, trigger);
  51.  
     
  52.  
    // 啓動
  53.  
    if (!sched.isShutdown()) {
  54.  
    sched.start();
  55.  
    System.err.println( "添加任務:"+jobName);
  56.  
    }
  57.  
    } catch (Exception e) {
  58.  
    throw new RuntimeException(e);
  59.  
    }
  60.  
    }
  61.  
     
  62.  
    /**
  63.  
    * @Description: 添加一個定時任務
  64.  
    * @param jobName
  65.  
    * 任務名
  66.  
    * @param jobGroupName
  67.  
    * 任務組名
  68.  
    * @param triggerName
  69.  
    * 觸發器名
  70.  
    * @param triggerGroupName
  71.  
    * 觸發器組名
  72.  
    * @param jobClass
  73.  
    * 任務
  74.  
    * @param time
  75.  
    * 時間設置,參考quartz說明文檔
  76.  
    */
  77.  
    @SuppressWarnings({ "rawtypes", "unchecked" })
  78.  
    public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName,
  79.  
    Class jobClass, String cron) {
  80.  
    try {
  81.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  82.  
    JobDetail job = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
  83.  
    // 表達式調度構建器
  84.  
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  85.  
    // 按新的cronExpression表達式構建一個新的trigger
  86.  
    Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
  87.  
    .withSchedule(scheduleBuilder).build();
  88.  
    sched.scheduleJob(job, trigger);
  89.  
    // 啓動
  90.  
    if (!sched.isShutdown()) {
  91.  
    sched.start();
  92.  
    }
  93.  
    } catch (Exception e) {
  94.  
    throw new RuntimeException(e);
  95.  
    }
  96.  
    }
  97.  
     
  98.  
    /**
  99.  
    * @Description: 修改一個任務的觸發時間(使用默認的任務組名,觸發器名,觸發器組名)
  100.  
    * @param jobName
  101.  
    * @param time
  102.  
    */
  103.  
    public static void modifyJobTime(String jobName, String cron) {
  104.  
    TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  105.  
     
  106.  
    try {
  107.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  108.  
    CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
  109.  
    if (trigger == null) {
  110.  
    return;
  111.  
    }
  112.  
    String oldTime = trigger.getCronExpression();
  113.  
    if (!oldTime.equalsIgnoreCase(cron)) {
  114.  
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  115.  
    // 按新的cronExpression表達式從新構建trigger
  116.  
    trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
  117.  
    // 按新的trigger從新設置job執行
  118.  
    sched.rescheduleJob(triggerKey, trigger);
  119.  
    }
  120.  
    } catch (Exception e) {
  121.  
    throw new RuntimeException(e);
  122.  
    }
  123.  
    }
  124.  
     
  125.  
     
  126.  
    /**
  127.  
    * @Description:修改任務,(能夠修改任務名,任務類,觸發時間)
  128.  
    * 原理:移除原來的任務,添加新的任務
  129.  
    * @param oldJobName :原任務名
  130.  
    * @param jobName
  131.  
    * @param jobclass
  132.  
    * @param cron
  133.  
    * @date 2018年5月23日 上午9:13:10
  134.  
    */
  135.  
    @SuppressWarnings({ "rawtypes", "unchecked" })
  136.  
    public static void modifyJob(String oldJobName, String jobName, Class jobclass, String cron) {
  137.  
    /*
  138.  
    * removeJob(oldJobName);
  139.  
    * addJob(jobName, jobclass, cron);
  140.  
    * System.err.println("修改任務"+oldJobName);
  141.  
    */
  142.  
    TriggerKey triggerKey = TriggerKey.triggerKey(oldJobName, TRIGGER_GROUP_NAME);
  143.  
    JobKey jobKey = JobKey.jobKey(oldJobName, JOB_GROUP_NAME);
  144.  
    try {
  145.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  146.  
    Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
  147.  
    if (trigger == null) {
  148.  
    return;
  149.  
    }
  150.  
    sched.pauseTrigger(triggerKey); // 中止觸發器
  151.  
    sched.unscheduleJob(triggerKey); // 移除觸發器
  152.  
    sched.deleteJob(jobKey); // 刪除任務
  153.  
    System.err.println( "移除任務:" + oldJobName);
  154.  
     
  155.  
    JobDetail job = JobBuilder.newJob(jobclass).withIdentity(jobName, JOB_GROUP_NAME).build();
  156.  
    // 表達式調度構建器
  157.  
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  158.  
    // 按新的cronExpression表達式構建一個新的trigger
  159.  
    Trigger newTrigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
  160.  
    .withSchedule(scheduleBuilder).build();
  161.  
     
  162.  
    // 交給scheduler去調度
  163.  
    sched.scheduleJob(job, newTrigger);
  164.  
     
  165.  
    // 啓動
  166.  
    if (!sched.isShutdown()) {
  167.  
    sched.start();
  168.  
    System.err.println( "添加新任務:" + jobName);
  169.  
    }
  170.  
    System.err.println( "修改任務【" + oldJobName + "】爲:" + jobName);
  171.  
    } catch (Exception e) {
  172.  
    throw new RuntimeException(e);
  173.  
    }
  174.  
     
  175.  
    }
  176.  
     
  177.  
     
  178.  
    /**
  179.  
    * @Description: 修改一個任務的觸發時間
  180.  
    * @param triggerName
  181.  
    * @param triggerGroupName
  182.  
    * @param time
  183.  
    */
  184.  
    public static void modifyJobTime(String triggerName, String triggerGroupName, String cron) {
  185.  
    TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
  186.  
    try {
  187.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  188.  
    CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
  189.  
    if (trigger == null) {
  190.  
    return;
  191.  
    }
  192.  
    String oldTime = trigger.getCronExpression();
  193.  
    if (!oldTime.equalsIgnoreCase(cron)) {
  194.  
    // trigger已存在,則更新相應的定時設置
  195.  
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  196.  
    // 按新的cronExpression表達式從新構建trigger
  197.  
    trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
  198.  
    // 按新的trigger從新設置job執行
  199.  
    sched.resumeTrigger(triggerKey);
  200.  
    }
  201.  
    } catch (Exception e) {
  202.  
    throw new RuntimeException(e);
  203.  
    }
  204.  
    }
  205.  
     
  206.  
    /**
  207.  
    * @Description 移除一個任務(使用默認的任務組名,觸發器名,觸發器組名)
  208.  
    * @param jobName
  209.  
    */
  210.  
    public static void removeJob(String jobName) {
  211.  
    TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  212.  
    JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  213.  
    try {
  214.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  215.  
    Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
  216.  
    if (trigger == null) {
  217.  
    return;
  218.  
    }
  219.  
    sched.pauseTrigger(triggerKey); // 中止觸發器
  220.  
    sched.unscheduleJob(triggerKey); // 移除觸發器
  221.  
    sched.deleteJob(jobKey); // 刪除任務
  222.  
    System.err.println( "移除任務:"+jobName);
  223.  
    } catch (Exception e) {
  224.  
    throw new RuntimeException(e);
  225.  
    }
  226.  
    }
  227.  
     
  228.  
    /**
  229.  
    * @Description: 移除一個任務
  230.  
    * @param jobName
  231.  
    * @param jobGroupName
  232.  
    * @param triggerName
  233.  
    * @param triggerGroupName
  234.  
    */
  235.  
    public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) {
  236.  
    TriggerKey triggerKey = TriggerKey.triggerKey(jobName, triggerGroupName);
  237.  
    JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  238.  
    try {
  239.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  240.  
    sched.pauseTrigger(triggerKey); // 中止觸發器
  241.  
    sched.unscheduleJob(triggerKey); // 移除觸發器
  242.  
    sched.deleteJob(jobKey); // 刪除任務
  243.  
    } catch (Exception e) {
  244.  
    throw new RuntimeException(e);
  245.  
    }
  246.  
    }
  247.  
     
  248.  
    /**
  249.  
    * @Description:暫停一個任務(使用默認組名)
  250.  
    * @param jobName
  251.  
    */
  252.  
    public static void pauseJob(String jobName) {
  253.  
    JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  254.  
    try {
  255.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  256.  
    sched.pauseJob(jobKey);
  257.  
    } catch (SchedulerException e) {
  258.  
    e.printStackTrace();
  259.  
    }
  260.  
    }
  261.  
     
  262.  
    /**
  263.  
    * @Description:暫停一個任務
  264.  
    * @param jobName
  265.  
    * @param jobGroupName
  266.  
    */
  267.  
    public static void pauseJob(String jobName, String jobGroupName) {
  268.  
    JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  269.  
    try {
  270.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  271.  
    sched.pauseJob(jobKey);
  272.  
    } catch (SchedulerException e) {
  273.  
    e.printStackTrace();
  274.  
    }
  275.  
    }
  276.  
     
  277.  
    /**
  278.  
    * @Description:恢復一個任務(使用默認組名)
  279.  
    * @param jobName
  280.  
    */
  281.  
    public static void resumeJob(String jobName) {
  282.  
    JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  283.  
    try {
  284.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  285.  
    sched.resumeJob(jobKey);
  286.  
    } catch (SchedulerException e) {
  287.  
    e.printStackTrace();
  288.  
    }
  289.  
    }
  290.  
     
  291.  
    /**
  292.  
    * @Description:恢復一個任務
  293.  
    * @param jobName
  294.  
    * @param jobGroupName
  295.  
    * @date 2018年5月17日 上午9:56:09
  296.  
    */
  297.  
    public static void resumeJob(String jobName, String jobGroupName) {
  298.  
    JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  299.  
    try {
  300.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  301.  
    sched.resumeJob(jobKey);
  302.  
    } catch (SchedulerException e) {
  303.  
    e.printStackTrace();
  304.  
    }
  305.  
    }
  306.  
     
  307.  
    /**
  308.  
    * @Description:啓動全部定時任務
  309.  
    */
  310.  
    public static void startJobs() {
  311.  
    try {
  312.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  313.  
    sched.start();
  314.  
    } catch (Exception e) {
  315.  
    throw new RuntimeException(e);
  316.  
    }
  317.  
    }
  318.  
     
  319.  
    /**
  320.  
    * @Description 關閉全部定時任務
  321.  
    */
  322.  
    public static void shutdownJobs() {
  323.  
    try {
  324.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  325.  
    if (!sched.isShutdown()) {
  326.  
    sched.shutdown();
  327.  
    }
  328.  
         } catch (Exception e) {
  329.  
    throw new RuntimeException(e);
  330.  
    }
  331.  
    }
  332.  
     
  333.  
    /**
  334.  
    * @Description: 當即運行任務,這裏的當即運行,只會運行一次,方便測試時用。
  335.  
    * @param jobName
  336.  
    * @param jobGroupName
  337.  
    * @date 2018年5月17日 上午10:03:26
  338.  
    */
  339.  
    public static void triggerJob(String jobName) {
  340.  
    JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  341.  
    try {
  342.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  343.  
    sched.triggerJob(jobKey);
  344.  
    } catch (SchedulerException e) {
  345.  
    e.printStackTrace();
  346.  
    }
  347.  
    }
  348.  
     
  349.  
    /**
  350.  
    * @Description: 當即運行任務,這裏的當即運行,只會運行一次,方便測試時用。
  351.  
    * @param jobName
  352.  
    * @param jobGroupName
  353.  
    * @date 2018年5月17日 上午10:03:26
  354.  
    */
  355.  
    public static void triggerJob(String jobName, String jobGroupName) {
  356.  
    JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  357.  
    try {
  358.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  359.  
    sched.triggerJob(jobKey);
  360.  
    } catch (SchedulerException e) {
  361.  
    e.printStackTrace();
  362.  
    }
  363.  
    }
  364.  
     
  365.  
    /**
  366.  
    * @Description: 獲取任務狀態
  367.  
    * NONE: 不存在
  368.  
    * NORMAL: 正常
  369.  
    * PAUSED: 暫停
  370.  
    * COMPLETE:完成
  371.  
    * ERROR : 錯誤
  372.  
    * BLOCKED : 阻塞
  373.  
    * @param jobName 觸發器名
  374.  
    * @date 2018年5月21日 下午2:13:45
  375.  
    */
  376.  
    public static String getTriggerState(String jobName){
  377.  
    TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  378.  
    String name = null;
  379.  
    try {
  380.  
    Scheduler sched = gSchedulerFactory.getScheduler();
  381.  
    TriggerState triggerState = sched.getTriggerState(triggerKey);
  382.  
    name = triggerState.name();
  383.  
    } catch (SchedulerException e) {
  384.  
    e.printStackTrace();
  385.  
    }
  386.  
    return name;
  387.  
    }
  388.  
     
  389.  
    /**
  390.  
    * @Description:獲取最近8次執行時間
  391.  
    * @param cron
  392.  
    * @date 2018年5月24日 下午5:13:03
  393.  
    */
  394.  
    public static List<String> getRecentTriggerTime(String cron) {
  395.  
    List<String> list = new ArrayList<String>();
  396.  
    try {
  397.  
    CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
  398.  
    cronTriggerImpl.setCronExpression(cron);
  399.  
    // 這個是重點,一行代碼搞定
  400.  
    List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, 8);
  401.  
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  402.  
    for (Date date : dates) {
  403.  
    list.add(dateFormat.format(date));
  404.  
    }
  405.  
     
  406.  
    } catch (ParseException e) {
  407.  
    e.printStackTrace();
  408.  
    }
  409.  
    return list;
  410.  
    }
  411.  
     
  412.  
    }

MyJob.java  執行的任務java

  1.  
     
  2.  
    import java.text.SimpleDateFormat;
  3.  
    import java.util.Calendar;
  4.  
     
  5.  
    import org.quartz.Job;
  6.  
    import org.quartz.JobExecutionContext;
  7.  
    import org.quartz.JobExecutionException;
  8.  
     
  9.  
    /**
  10.  
    * @Description:
  11.  
    * @date 2018年5月16日
  12.  
    */
  13.  
    public class MyJob implements Job {
  14.  
     
  15.  
    @Override
  16.  
    public void execute(JobExecutionContext context) throws JobExecutionException {
  17.  
     
  18.  
    System.err.println( "任務運行開始-------- start --------");
  19.  
    try {
  20.  
    String jobName = context.getJobDetail().getKey().getName();
  21.  
    String jobGroup = context.getJobDetail().getKey().getGroup();
  22.  
    String triggerName = context.getTrigger().getKey().getName();
  23.  
    String triggerGroup = context.getTrigger().getKey().getGroup();
  24.  
     
  25.  
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
  26.  
    System.err.println( "觸發器Key:" + triggerName + ".." + triggerGroup + " 正在執行...");
  27.  
    System.err.println( "任務Key:" + jobName + ".." + jobGroup + " 正在執行,執行時間: "
  28.  
    + dateFormat.format(Calendar.getInstance().getTime()));
  29.  
     
  30.  
    } catch (Exception e) {
  31.  
    System.err.println( "捕獲異常==="+e);
  32.  
    }
  33.  
    System.err.println( "任務運行結束-------- end --------");
  34.  
    }
  35.  
     
  36.  
    }

測試類 LoadTask.javapython

  1.  
     
  2.  
    public class LoadTask {
  3.  
     
  4.  
    public static void main(String[] args) {
  5.  
    System.err.println( "【系統啓動】");
  6.  
    String corn = "0/5 * * * * ?";
  7.  
    //QuartzManager.addJob("job1", "jobGooup", "trigger1", "triggerGroup", MyJob.class, corn);
  8.  
    QuartzManager.addJob( "job1", MyJob.class, corn);
  9.  
    System.err.println( "添加任務一");
  10.  
    QuartzManager.getTriggerState( "jobs");
  11.  
     
  12.  
    //睡眠一分鐘
  13.  
    try {
  14.  
    Thread.sleep( 60L * 1000L);
  15.  
    } catch (InterruptedException e) {
  16.  
    e.printStackTrace();
  17.  
    }
  18.  
     
  19.  
     
  20.  
    QuartzManager.modifyJobTime( "job1", "0/3 * * * * ?");
  21.  
    System.out.println( "修改觸發時間");
  22.  
     
  23.  
    try {
  24.  
    Thread.sleep( 15L * 1000L);
  25.  
    } catch (InterruptedException e) {
  26.  
    e.printStackTrace();
  27.  
    }
  28.  
     
  29.  
    QuartzManager.removeJob( "job1");
  30.  
    //QuartzManager.removeJob("job1", "jobGooup", "trigger1", "triggerGroup");
  31.  
    System.out.println( "刪除任務");
  32.  
     
  33.  
    try {
  34.  
    Thread.sleep( 5L * 1000L);
  35.  
    } catch (InterruptedException e) {
  36.  
    e.printStackTrace();
  37.  
    }
  38.  
     
  39.  
    System.out.println( "【添加定時任務】");
  40.  
    QuartzManager.addJob( "job1", MyJob.class, corn);
  41.  
    //QuartzManager.shutdownJobs();
  42.  
    //System.out.println("中止全部任務");
  43.  
    try {
  44.  
    Thread.sleep( 5L * 1000L);
  45.  
    } catch (InterruptedException e) {
  46.  
    e.printStackTrace();
  47.  
    }
  48.  
     
  49.  
    System.out.println( "【暫停定時任務】");
  50.  
    QuartzManager.pauseJob( "job1");
  51.  
    System.out.println( "【當即運行一次】");
  52.  
    QuartzManager.triggerJob( "job1");
  53.  
    try {
  54.  
    Thread.sleep( 5L * 1000L);
  55.  
    } catch (InterruptedException e) {
  56.  
    e.printStackTrace();
  57.  
    }
  58.  
     
  59.  
    System.out.println( "【恢復定時任務】");
  60.  
    QuartzManager.resumeJob( "job1");
  61.  
    try {
  62.  
    Thread.sleep( 5L * 1000L);
  63.  
    } catch (InterruptedException e) {
  64.  
    e.printStackTrace();
  65.  
    }
  66.  
     
  67.  
    QuartzManager.shutdownJobs();
  68.  
    }
  69.  
    }
  • qq_42617840
    溪雪:  你好,請問任務狀態爲何會一直處在「不存在」的狀態呢?(任務名和TRIGGER_GROUP_NAME沒問題)(1個月前#1樓)
    0

Quartz調度、終止執行的任務

08-07
使用Quartz調度任務,根據須要人爲的終止某個任務,適用於不少常見的場景
下載

quartz定時任務執行一段時間中止了

09-01

-問答

原來除皮膚瘙癢這麼簡單?只有1%人知道的方法谷豐健康 · 獵媒

Spring+Quartz定時器使用方法(任務的添加刪除修改暫停..._CSDN博客

11-2

Spring 內置了quartz框架,能夠對方法上註解或者在配置文件裏配置定時任務。可是若是...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) 05-25 395...

quartz 定時任務的刪除 恢復 已經暫停 - taizhen/blog - CSDN博客

4-10

在動態添加定時任務中其實已經涉及到了其中的一些代碼,這裏咱們再來細化的理一理...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) 05-25 閱讀...

quartz配置動態任務,從數據庫讀取相應的類及方法,執行..._CSDN博客

11-23

步驟:首先建立一個javabean---》建立Quartz工廠---》xmlSchedulerFactoryBean--...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) - loveLifeLove...

...Scheduler (Quartz) 動態添加,刪除,修改任務的例子 ..._CSDN博客

10-30

標籤:schdule quartz 定時任務 要求 根據任務清單執行不定數量,不定頻率的定時任務。而且須要動態添加,刪除,修改任務。 代碼 public class JobExample { public ...

Spring3整合Quartz2實現定時任務及動態任務調整(添加刪..._CSDN博客

10-26

最近工做中須要用到定時任務的功能,雖然Spring3也自帶了一個輕量級的定時任務實現...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) 05-25 345...

SpringBoot整合Quartz之動態控制任務(暫停,啓動,修改執..._CSDN博客

4-10

SpringBoot整合 Quartz 篇請移步 https://blog.csdn.net/yali_aini/article...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) 05-25 閱讀...

任務調度開源框架Quartz動態添加、修改和刪除定時任務 ..._CSDN博客

11-18

         Quartz 是個開源的做業調度框架,爲在 Java 應用...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) - loveLifeLo...

Quartz1.7 動態添加、修改和刪除定時任務(非spring集成..._CSDN博客

11-23

Quartz是一個由James House創立的開源項目,是一個功能強大的做業調度工具,能夠計劃...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) - loveLifeLo...

晚上白開水+它,胖到160斤都能瘦,後悔沒早知道道羣 · 獵媒

關於quartz暫停恢復後,job執行屢次的異常狀況 - u01375..._CSDN博客

11-24

個人quartzjob使用的是jdbcstore方式。我須要設置個人job能夠實現故障恢復,又由於...Quartz動態添加,修改,刪除任務(暫停,任務狀態,恢復,最近觸發時間) - loveLifeLove...

quartz 暫停後從新啓動,在暫停時 被暫停後的任務,在啓動後會補償執行即 會連續屢次調用job中的execute方法。

閱讀數 9795

調度(scheduleJob)或恢復調度(resumeTrigger,resumeJob)後不一樣的misfire對應的處理規則CronTrigger withMisfireHandlingInstru...博文來自: rabbit0708的專欄

白開水+它,喝完排出 巨便 !大肚子沒了裕華 · 獵媒

Quartz的簡化(只要一張表,動態啓停任務)

閱讀數 2763

spring-quartz,一張表配置、動態啓停Job博文來自: 蒲公英的約定

Spring Quartz 動態暫停、恢復、修改定時任務

01-06
Spring Quartz 動態暫停、恢復、修改定時任務的一個demo,使用maven構建,框架採用spring springmvc jpa,數據庫mysql,含數據庫腳本,運行可用,頁面訪問地址ht
下載
肚子胖的像懷孕?白開水+它,1天瘦2斤!想胖都難寧龍商貿 · 獵媒

Quartz動態添加、修改和刪除定時任務時間的方法以及日期轉換cron表達式時間格式工具類

閱讀數 9435

QuartzCronDateUtils博文來自: dengyu的專欄

碼農必看:各大平臺的推薦系統原來是靠它完成的,太牛了

第四範式先薦幫助客戶從0到1搭建推薦系統,顯著提高用戶活躍,留存,觀看時長等重要業務指標

Cron+Trigger+Quartz 任務 啓動 暫停 恢復 修改 實例

閱讀數 554

packagecom.xxl.job.admin.core.schedule;importcom.xxl.job.admin.core.jobbean.RemoteHttpJobBean;import...博文來自: z69183787的專欄

如何快速提高個性化推薦效果?

先薦推薦系統適合首頁,信息流,內容詳情頁等場景,支持網頁, APP,小程序,快應用,1分鐘安裝5分鐘上線,支持人工干預推薦

第四範式發佈先薦推薦系統,幫助300+媒體平臺實現內容升級

先薦推薦系統由國際頂尖智能推薦團隊研發,三步便可完成接入,毫秒級數據更新,支持PC,WAP, APP全平臺接入

人臉檢測工具face_recognition的安裝與應用

閱讀數 5萬+

人臉檢測工具face_recognition的安裝與應用博文來自: roguesir的博客

原創
38
粉絲
4
喜歡
8
評論
3
等級:
 
訪問:
 
2萬+
積分:
 
581
排名:
 
11萬+
勳章:
 

最新評論

相關文章
相關標籤/搜索