首页 > 解决方案 > 在 dropwizard 中的单独线程上进行作业调度

问题描述

我正在尝试在 java dropwizard 框架中创建一个作业调度程序。我找到dropwizard-sundial并使用如下:我从https://github.com/knowm/dropwizard-sundial添加了配置。我的CronJob.class看起来像:

import org.knowm.sundial.Job;
import org.knowm.sundial.annotations.CronTrigger;
import org.knowm.sundial.exceptions.JobInterruptException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 

    @CronTrigger(cron = ""* * * * * ? *"")
    public class CronJob extends Job {
     
        private static final Logger logger = LoggerFactory.getLogger(CronJob.class);
        @Override
        public void doRun() throws JobInterruptException {
            logger.info("Hello from Cron Job");
        }
    }

当我运行该服务时,我可以看到Hello from Cron Job每秒都在吐出。有什么方法可以让我在单独的线程上简单地运行 cronjob?我试图让类实现Runnable如下:

public class CronJob extends Job implements Runnable{
....
}

但后来我得到了, An error occured instantiating job to be executed. job= 'CronJob'

CronJob编辑:我在为类创建自己的构造函数时也遇到了上述错误

INFO  [2021-09-16 00:28:36,747] org.knowm.sundial.ee.SundialInitializerListener: Sundial Scheduler has been started...
ERROR [2021-09-16 00:28:36,755] org.quartz.ErrorLoggingScheduleListener: An error occured instantiating job to be executed. job= 'CronJob'
! java.lang.NoSuchMethodException: job.CronJob.<init>()
! at java.base/java.lang.Class.getConstructor0(Class.java:3349)
! at java.base/java.lang.Class.newInstance(Class.java:556)
! ... 3 common frames omitted
! Causing: java.lang.InstantiationException: job.CronJob
! at java.base/java.lang.Class.newInstance(Class.java:571)
! at org.quartz.jobs.SimpleJobFactory.newJob(SimpleJobFactory.java:47)
! ... 2 common frames omitted
! Causing: org.quartz.exceptions.SchedulerException: Problem instantiating class 'job.CronJob'
! at org.quartz.jobs.SimpleJobFactory.newJob(SimpleJobFactory.java:49)
! at org.quartz.core.JobRunShell.initialize(JobRunShell.java:113)
! at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:346)
INFO  [2021-09-16 00:28:36,756] org.quartz.core.RAMJobStore: All triggers of Job CronJob set to ERROR state.
INFO  [2021-09-16 00:28:37,441] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:

标签: javajob-scheduling

解决方案


推荐阅读