private Map<String, Object> registerJob(String jobName) throws DuplicateJobException { String taskId = jobKeyMap.get(JoinCode.getTaskCode(jobName)).getTaskId(); TaskDefineEntity tm = taskDefineMap.get(taskId); Job job = taskletConfig.job(conf, jobName, tm.getTaskType(), tm.getScriptFile()); ReferenceJobFactory regJob = new ReferenceJobFactory(job); try { jobRegistry.register(regJob); } catch (DuplicateJobException e) { jobRegistry.unregister(jobName); jobRegistry.register(regJob); } logger.debug("register job,job name is :{}", jobName); Map<String, Object> map = new HashMap<>(); map.put("jobName", jobName); map.put("jobLauncher", jobLauncher); map.put("jobRegistry", jobRegistry); map.put("jobKeyStatusService", jobKeyStatusService); map.put("argumentService", argumentService); return map; }
public static void main(String[] args) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException, DuplicateJobException { ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args); Job simpleJob = ctx.getBean("simpleJob", Job.class); JobRegistry jobRegistry = ctx.getBean("jobRegistry", JobRegistry.class); jobRegistry.register(new ReferenceJobFactory(simpleJob)); //JobRepository jobRepository = ctx.getBean("jobRepository", JobRepository.class); //JobInstance jobInstance = jobRepository.createJobInstance("simpleJob", new JobParameters()); // JobParameters jobParameters = ctx.getBean("basicParameters", JobParameters.class); // //JobRegistry jobRegistry = ctx.getBean("mapJobRegistry", JobRegistry.class); // jobRegistry.register(); // jobLauncher.run(job, jobParameters); }
/** * 将任务与触发器关联 * 每一个任务,对应着一个触发器 * 每一个触发器,也只对应一个任务 */ private SimpleTrigger createSimpleTrigger(String jobName) throws DuplicateJobException { SimpleTriggerFactoryBean simpleTriggerFactoryBean = new SimpleTriggerFactoryBean(); JobDetail job = jobDetailFactoryBean(jobName).getObject(); simpleTriggerFactoryBean.setJobDetail(job); simpleTriggerFactoryBean.setRepeatCount(0); simpleTriggerFactoryBean.setRepeatInterval(12); simpleTriggerFactoryBean.setGroup(jobName); simpleTriggerFactoryBean.setName(jobName); simpleTriggerFactoryBean.afterPropertiesSet(); return simpleTriggerFactoryBean.getObject(); }
public void register(Job job, org.springframework.batch.core.JobExecution jobExecution) throws DuplicateJobException { if(registry.containsKey(jobExecution.getId())) { throw new DuplicateJobException("This job execution has already been registered"); } else { registry.put(jobExecution.getId(), job); } }