首页 > 解决方案 > 如何在 dropwizard 中禁用 cron 作业

问题描述

我有一些在预定时间运行的 Dropwizard 作业,但我想向管理员提供在运行时启用和禁用它们的可能性。有没有一种简单的方法可以用 dropwizard 做到这一点?在不注入属性/切换的情况下,我可以做些什么来更容易地禁用这种工作。

  import de.spinscale.dropwizard.jobs.Job;
  import de.spinscale.dropwizard.jobs.annotations.On;

  @On("${someJob}")
  public class MyJob extends Job {
        @Override
         public void doJob(JobExecutionContext context) {
             // do stuff...
         }
     }

标签: javaasynchronousquartz-schedulerdropwizard

解决方案


是的,您可以使用这些端点来做到这一点:

@POST
@Path("/my-job")
public void enableJob() throws SchedulerException {
    JobDetail jobDetail = JobBuilder.newJob(MyJob.class).build();
    jobManager.getScheduler().addJob(jobDetail, false);
}

@DELETE
@Path("/my-job")
public void disableJob() throws SchedulerException {
    JobDetail jobDetail = JobBuilder.newJob(MyJob.class).build();
    JobKey jobKey = JobKey.jobKey(MyJob.class.getCanonicalName());
    jobManager.getScheduler().deleteJob(jobKey);
}

JobManager是你给 Dropwizard 的那个

environment.lifecycle().manage(jobManager);

推荐阅读