我有一些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...
}
}
答案 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
是您用
environment.lifecycle().manage(jobManager);