我遇到了同样的问题: 无法使用名称存储触发器:' schedulerJobTrigger'和group:' group1',因为已存在此标识。
所以在我考虑取消工作之前,我有一个查询:
说我有2个工作..详细信息如下: Job1:今天开始时间@ 17:30,每5分钟重复两次 工作2:今天开始时间@ 17:37
因此,如果我在17:30执行后取消计划一个作业(可能会删除Trigger)并执行Job2,那么调度程序将如何运行需要分别运行的Job1 @ 17:35和17:40(这是重复)
谢谢,请帮帮忙!
在尝试上述方案之前,即使我使用不同的计划安排新工作 @ scheduler.scheduleJob(job,trigger);它给了我一个例外:无法用名称存储Trigger:' schedulerJobTrigger'和group:' group1',因为已存在此标识。
答案 0 :(得分:4)
解决,检查是否存在相同的触发器,如果是,则创建一个具有不同标识的新触发器实例并运行代码。
boolean flag = scheduler.checkExists(trigger.getKey());
if (!flag)
{
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
else
{
Trigger trigger1 =TriggerBuilder.newTrigger().withIdentity("schedulerJobTrigger1", "group1").withSchedule(schedBuilder).build();;
scheduler.start();
scheduler.scheduleJob(job, trigger1);
}