java - Jobstore 表中的 Quartz Scheduler 作业数据覆盖

标签 java mysql quartz-scheduler

我正在使用 quartz 2.2.1 和 mysql 进行作业存储,为了创建新作业,它会用旧作业数据覆盖 mysql 表中的表内容。 没有错误。

这是我的代码:

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.JobDetail;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

public class OwnScheduler {

    public static void main(String[] args) throws InterruptedException, SchedulerException{

        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        try {
            // Grab the Scheduler instance from the Factory 

            // and start it off
            scheduler.start();

            JobDetail job1 = newJob(FetchJob.class).storeDurably(true).withIdentity("test4","Group4").build();
            Trigger trigger = (Trigger) TriggerBuilder.newTrigger()
                    .withIdentity("Trigger2", "Group4").startNow()
                    .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(2))
                        .build();
            Thread.sleep(90L * 10L);

            scheduler.scheduleJob(job1, (Trigger) trigger);

            scheduler.shutdown();

        } catch (Exception se) {
            se.printStackTrace();
        }
    }
}

和我的属性文件:

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.scheduler.instanceId = NON_CLUSTERED 
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 50
org.quartz.scheduler.jobFactory.class = org.quartz.simpl.SimpleJobFactory
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.dataSource = quartz
org.quartz.jobStore.nonManagedTXDataSource = quartz
org.quartz.dataSource.quartz.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.quartz.URL = jdbc:mysql://localhost/quartz
org.quartz.dataSource.quartz.user = root
org.quartz.dataSource.quartz.password = password

我做错了什么。

对于每个作业创建,表数据都会被新作业的详细信息覆盖。 感谢您的关注。

最佳答案

你如何调用这段代码?您有一个进入 JVM 运行时的主要入口,您可以在其中初始化 Quartz、一个作业和一个触发器,安排作业,然后关闭调度程序。为什么不只根据某些条件开始调度并退出?

关于java - Jobstore 表中的 Quartz Scheduler 作业数据覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32820930/

相关文章:

Java 使用更改的变量重复检查 x 次

java - 2G 或 3G 数据 API

mysql - 改善缓慢的 Mysql 查询

mysql - inner join in mysql需要很长时间

java - MongoDB Java API 读取速度慢

java - 如何修复 POST 请求 Retrofit 上的错误 400

mysql - 通过bash获取MYSQL数据库信息

java - Spring Batch (2.2) Java Config + Quartz 作为调度程序

java - 两个 Quartz-Worker 执行相同的作业两次

java - 无法使用 SLF4J 禁用 quartz 调度程序日志记录