如何在dropwizard

时间:2018-05-14 08:42:32

标签: java asynchronous quartz-scheduler dropwizard

我有一些Dropwizard Jobs在预定的时间运行,但我想向管理员提供在运行时启用和禁用它们的可能性。使用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...
         }
     }

1 个答案:

答案 0 :(得分:0)

是的,您可以使用以下端点进行操作:

@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);