当前位置: 首页 > 知识库问答 >
问题:

在Jobstore表中覆盖Quartz调度程序作业数据

湛宝
2023-03-14

我用的是石英2.2。1和mysql用于job store,用于创建新的job,它用旧job数据覆盖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

我做错了什么。

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

共有1个答案

姜华翰
2023-03-14

你怎么称呼这个代码?您有一个进入JVM运行时的主条目,在那里您可以初始化石英、作业和触发器,您可以调度作业,然后关闭调度器。你为什么不开始计划,只根据某些条件退出呢?

 类似资料:
  • 这是我第一次存储作业,并使用crontrigger使用下面的代码对作业进行调度。 详细信息存储在表中--、&

  • 我正在使用Quartz调度器,但我不知道如何并行运行作业。配置文件中有什么东西可以允许我这样做吗?

  • 我有一个使用Quartz1.6.6的Java应用程序。它被部署到Weblogic上,Weblogic的体系结构包括两个应用服务器。 令人困惑的是,我有另一个Java应用程序,其中包含了Quartz调度,它似乎运行得非常愉快。另一个应用程序有一个相同的机制,每分钟触发一个触发器,从日志中我可以看到该作业每60秒只运行一次。 昨天下午作业已运行的次数示例: 15:10:46,984 15:10:49,

  • 我们有一个使用Spring Framework在Tomcat中运行的Web应用程序。我们需要为循环操作添加一些计划作业。为此,我们遇到了Quartz Scheduler,并遵循了使用Quartz with Spring配置作业的教程,并按预期计划并运行了作业。 所以我们有一些任务是在应用程序启动时安排的。现在我们希望用户手动运行作业并更改作业的触发器,但是我们需要将这些更改持久化到数据库中。因此,

  • 我想使用Quartz和Oracle作为JobStore来安排作业。我看到了大多数使用RAMjobstore的示例(当然它不是持久的),但几乎没有任何一个可以帮助我满足Spring boot Quartz Oracle开发的需求。 如有任何指向代码示例或github项目的链接或帮助,将不胜感激。

  • 我使用Quartz调度器执行10个作业。所有这些工作都有自己的导火索。因此它们是异步执行的。 然而,现在我需要这些工作中的2个,以更具体的方式执行。假设Job1每偶数分钟执行一次,Job2每奇数分钟执行一次。现在我想让Job2等待Job1完成。示例:Job1在10:02开始执行。10点03分,Job2的触发器被触发。但是在Job2开始执行之前,如果Job1已经完成,它将查看它。 你知道我怎么解决问