• Trigger替换Demo


    maven工程

    pom依赖   

    
        org.quartz-scheduler
        quartz
        2.2.1
    

    1. import org.quartz.Job;
    2. import org.quartz.JobExecutionContext;
    3. import org.quartz.JobExecutionException;
    4. /**
    5. * @author hrui
    6. * @date 2023/11/17 0:52
    7. */
    8. public class MyJob implements Job {
    9. @Override
    10. public void execute(JobExecutionContext context) throws JobExecutionException {
    11. //Object user = context.getJobDetail().getJobDataMap().get("user");
    12. Object user = context.getTrigger().getJobDataMap().get("user");
    13. System.out.println(user+"在执行任务");
    14. }
    15. }
    1. import org.quartz.*;
    2. import org.quartz.impl.StdSchedulerFactory;
    3. /**
    4. * @author hrui
    5. * @date 2023/11/17 0:52
    6. */
    7. public class Test {
    8. public static void main(String[] args) throws SchedulerException {
    9. Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();
    10. JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1")
    11. .build();
    12. Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trg1", "tg1")
    13. .usingJobData("user", "用户1")
    14. .withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();
    15. scheduler.scheduleJob(jobDetail, trigger);
    16. scheduler.start();
    17. try {
    18. Thread.sleep(5000);
    19. } catch (InterruptedException e) {
    20. e.printStackTrace();
    21. }
    22. Trigger newTrigger = TriggerBuilder.newTrigger()
    23. .withIdentity("newTrigger", "tg1")
    24. .startNow()
    25. .usingJobData("user", "用户2")
    26. .withSchedule(CronScheduleBuilder.cronSchedule("*/3 * * * * ?"))
    27. .build();
    28. // 替换原始触发器 替换之后,原来的触发器会被删除
    29. scheduler.rescheduleJob(trigger.getKey(), newTrigger);
    30. Trigger trigger1 = scheduler.getTrigger(trigger.getKey());
    31. System.out.println(trigger1);
    32. Trigger trigger2 = scheduler.getTrigger(newTrigger.getKey());
    33. System.out.println(trigger2);
    34. }
    35. }

    执行结果

    解决日志问题

    引入日志依赖   pom文件

    
        
            org.quartz-scheduler
            quartz
            2.2.1
        
        
        
            org.slf4j
            slf4j-log4j12
            1.7.12
        
        
            log4j
            log4j
            1.2.17
        
        
            org.projectlombok
            lombok
            RELEASE
            compile
        
    
    

    resources下 新建  log4j.properties文件

    # 设置日志级别为INFO
    log4j.rootCategory=INFO, stdout
    
    # 输出到控制台的appender配置
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
    # 输出到文件的appender配置
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    #log4j.appender.file.File=/path/to/quartz.log
    log4j.appender.file.File=F:/quartz.log
    log4j.appender.file.MaxFileSize=10MB
    log4j.appender.file.MaxBackupIndex=5
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
    # 配置quartz的日志级别为INFO,并将日志输出到控制台和文件
    log4j.logger.org.quartz=INFO, stdout, file

     

  • 相关阅读:
    MacOS 文件句柄数不够 Error: EMFILE: too many open files
    C#多态的实现
    多维数组(二维数组)
    【C语言】指针和数组笔试题解析
    linux 文件系统命令
    十八、字符串(3)
    MongoDB 批量插入或保存
    如何构建最佳的SaaS联盟计划
    字符串/模式匹配算法KMP
    ISO20000认证的意义是什么?
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/134453817