我们通过 dropwizard 作业库为我们的 dropwizard 项目设置了作业。我们想添加一些功能以允许我们手动触发这些作业。有谁知道怎么做?
如果没有办法做到这一点,有没有什么办法可以使用底层的 quartz 调度程序库来触发作业?需要注意的是我们使用的是hk2依赖注入。所以我们的工作类有依赖传递给他们。
这里是 dropwizard-jobs 库的链接: https://github.com/dropwizard-jobs/dropwizard-jobs
我尝试将我们拥有的作业类(专为 dropwizard 作业框架设计)包装在实现 quartz 库的 thr Job 接口的类中,然后我尝试了以下代码来执行它们。
// Create a new Job
JobKey jobKey = JobKey.jobKey("myNewJob", "myJobGroup");
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably().build();
// Register this job to the scheduler
scheduler.addJob(job, true);
// Immediately fire the Job MyJob.class
scheduler.triggerJob(jobKey);
然而,这项工作似乎永远不会运行。即使在调试时,我也看到从未命中作业中代码的断点。我只见过他们被击中一次,那是在调试会话期间,但到目前为止,还无法复制这种行为。
这让我认为工作是失败的。但我对 quartz 或 dropwizard-jobs 没有太多经验,所以我不确定如何调试/排除故障或根本原因可能是什么。我想知道原因是否可能是我们正在使用的 MyJob.class 使用了 hk2 依赖注入,结果我们可能无法像这样调用作业。但我不确定