-1

如何在不引发以下错误的情况下创建 adojobstore:

 Unable to store job because one already exists with this identification.

我可以从数据库中读取并检查作业是否不存在然后将其添加到调度程序中吗?这是推荐的做法吗?

是否需要关闭 Azure 上的调度程序?

4

1 回答 1

2

当您使用 AdoJobStore 时,您将作业保存在 DB 中,因此您可以在安排作业之前单独检查表中作业的存在,否则只需使用具有相同 JobID 的 AddJob 并确保创建持久作业。

可以重用的作业必须是持久的,这意味着即使没有调度,作业仍然存在,这意味着它没有附加触发器。持久作业的示例如下:

dJob = new JobDetail("consolidate-attendance", "daily-attendance-group", 
              ConsolidateAttendance.class,
              /* volatile */ false, 
              /* durable */ true,
              /* recover */ false);
sched.addJob(jobContext, dJob, false);

ScheduleJob 有两个版本,一个接受带有触发器的作业和另一个作业,因此您需要确定要使用哪一个。如果您已经定义了作业,那么您不能使用 ScheduleJob 接受作业和触发器,因为在内部调度程序会尝试将作业添加到自身并失败。

当已经定义了作业时,您只需通过触发器类将作业与触发器绑定,并使用只接受触发器的 scheduleJob。

这应该可以工作,您不需要关闭调度程序。

于 2012-06-26T21:02:25.113 回答