将多个触发器添加到单个石英作业

| 我想动态地将触发器添加到作业,但找不到Scheduler之外的任何有用方法 我虽然可以重复调用scheduleJob方法,但这给了我ObjectAlreadyExists异常\“,因为该标识已经存在\”。 我怎样才能做到这一点? 编辑
private boolean scheduleLoadJob( XfuScheduleTimeInfo time )
{
    LoadScheduleJob job = new LoadScheduleJob( time );
    JobDetail detail;

    Integer id = Integer.valueOf( time.getScheduleId() );
    if( _hashMap.containsKey( id ) )
    {
        detail = _hashMap.get( Integer.valueOf( time.getScheduleId() ) );
    }
    else
    {
        detail = job.getDetail();
        _hashMap.put( id, detail );
    }

    try
    {
        Trigger newTrigger = job.getTrigger();
        _log.debug( \"------\" + newTrigger.getKey() );
        _quartzScheduler.scheduleJob( detail, newTrigger );
        return true;
    }
    catch( ParseException e )
    {
        _log.error( \"Unable to parse cron expression for \" + job.getInfo() );
        return false;
    }
    catch( SchedulerException e )
    {
        _log.error( \"Job scheduling failed for \" + job.getInfo() );
        return false;
    }
}
带控制台输出 ------ LoadJobs.Trigger-44 批量获取1个触发器 Job \'LoadJobs.Job-42 \'的生产实例,class = com.scheduling.LoadScheduleJob 在作业JobJobs.Job-42上调用执行 批量获取1个触发器 需要的职位:42:44 ------ LoadJobs.Trigger-45 42的作业调度失败:45-1/5 * *? * *     
已邀请:
        这篇文章给出了一个提示,但是结论(schedulerInstance.add(trigger))从Quartz 2.01开始是无效的。 在将作业关联到触发器之后,请使用以下命令(一种方法是使用TriggerBuilder的forJob方法)
 schedulerInstance.scheduleJob( newTrigger )
    
        
    CronTrigger trigger=null;
    CronTrigger trigger1=null;
    CronTrigger trigger2=null;

    JobDetail job = new JobDetail();
    job.setName(\"dummyJobName\");
    job.setJobClass(ExampleJob.class);

    trigger = new CronTrigger();
    trigger.setName(\"AppTrigger\");
    trigger.setGroup(job.getGroup());
    trigger.setJobName(job.getName());
    trigger.setJobGroup(job.getGroup());
    trigger.setCronExpression(\"*/2 * * * * ?\");

    trigger1 = new CronTrigger();
    trigger1.setName(\"AppTrigger1\");
    trigger1.setGroup(job.getGroup());
    trigger1.setJobName(job.getName());
    trigger1.setJobGroup(job.getGroup());
    trigger1.setCronExpression(\"*/2 * * * * ?\");

    trigger2 = new CronTrigger();
    trigger2.setName(\"AppTrigger2\");
    trigger2.setGroup(job.getGroup());
    trigger2.setJobName(job.getName());
    trigger2.setJobGroup(job.getGroup());
    trigger2.setCronExpression(\"*/2 * * * * ?\");

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();

    scheduler.start();
    scheduler.addJob(job, true);
    scheduler.scheduleJob(trigger);
    scheduler.scheduleJob(trigger1);
    scheduler.scheduleJob(trigger2);
    
        您可以重复调用scheduleJob。只需确保为每个触发器指定一个唯一的名称/组即可。 请参阅TriggerBuilder.withIdentity:http://www.quartz-scheduler.org/docs/api/2.0.0/index.html     

要回复问题请先登录注册