Trigger替换Demo

maven工程

pom依赖

复制代码
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>
复制代码
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * @author hrui
 * @date 2023/11/17 0:52
 */
public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        //Object user = context.getJobDetail().getJobDataMap().get("user");
        Object user = context.getTrigger().getJobDataMap().get("user");
        System.out.println(user+"在执行任务");
    }
}

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author hrui
 * @date 2023/11/17 0:52
 */
public class Test {

    public static void main(String[] args) throws SchedulerException {
        Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();

        JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1")
                .build();

        Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trg1", "tg1")
                .usingJobData("user", "用户1")
                .withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();

        scheduler.scheduleJob(jobDetail, trigger);

        scheduler.start();

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Trigger newTrigger = TriggerBuilder.newTrigger()
                .withIdentity("newTrigger", "tg1")
                .startNow()
                .usingJobData("user", "用户2")
                .withSchedule(CronScheduleBuilder.cronSchedule("*/3 * * * * ?"))
                .build();
        // 替换原始触发器 替换之后,原来的触发器会被删除
        scheduler.rescheduleJob(trigger.getKey(), newTrigger);
        

        Trigger trigger1 = scheduler.getTrigger(trigger.getKey());
        System.out.println(trigger1);


        Trigger trigger2 = scheduler.getTrigger(newTrigger.getKey());
        System.out.println(trigger2);

    }
}

执行结果

解决日志问题

引入日志依赖 pom文件

复制代码
<dependencies>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.1</version>
    </dependency>
    <!--log4j-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>

</dependencies>

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
相关推荐
888CC++9 分钟前
箭头函数(ES6)
前端·javascript·es6
云烟成雨TD11 分钟前
Agent Scope Java 2.x 系列【11】中间件(Middleware):核心设计
java·人工智能·agent
心之伊始14 分钟前
Spring AI Chat Memory 实战:用 JDBC 给 Java Agent 加会话记忆
java·spring boot·agent·spring ai·chat memory
凡人叶枫17 分钟前
Effective C++ 条款40:明智而审慎地使用多重继承
java·数据库·c++·嵌入式开发·effective c++
qq_4198540518 分钟前
css filter
前端·javascript·css
无限进步_19 分钟前
【Linux】系统级文件I/O与文件描述符深度剖析
linux·运维·服务器
放弃 治疗20 分钟前
宝塔面板安装 JDK 完整教程|Java 环境配置详解
java·开发语言
小陈phd26 分钟前
LCEL(LangChain Expression Language)语法全解
服务器·网络·langchain
至此流年莫相忘32 分钟前
Spring 依赖注入三剑客:@Autowired、@Resource 与 @RequiredArgsConstructor 深度对比与实战指南
java·数据库·spring
ctrl_v助手36 分钟前
VisionPro (R) QuickBuild相机的连接
服务器·笔记·数码相机·c#