spring batch 并行执行任务
2018-02-24 13:55
239 查看
@RequestMapping("/startall")
@ResponseBody
String startall() throws ParseException {
if (TimeFlag.getJobRun()) {
System.out.println("Cron Start All Data Rsync Job. But Job Running.");
return "Job Running. wait.....";
}
System.out.println("Url Start All Data Rsync Job.");
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
jobParametersBuilder.addDate("Date", new Date());
JobParameters dateJobParameters = jobParametersBuilder.toJobParameters();
try {
jobLauncher.run(importAllUserJob(), dateJobParameters);
} catch (JobExecutionAlreadyRunningException e) {
e.printStackTrace();
} catch (JobRestartException e) {
e.printStackTrace();
} catch (JobInstanceAlreadyCompleteException e) {
e.printStackTrace();
} catch (JobParametersInvalidException e) {
e.printStackTrace();
}
return "执行完成";
}
public Job importAllUserJob() {
Flow splitFlow = new FlowBuilder<Flow>("splitflow").split(new SimpleAsyncTaskExecutor()).add(
new FlowBuilder<Flow>(AllCITnsurance.getName()).from(AllCITnsurance).end(),
new FlowBuilder<Flow>(AllCustomer.getName()).from(AllCustomer).end(),
new FlowBuilder<Flow>(AllCInsurance.getName()).from(AllCInsurance).end(),
new FlowBuilder<Flow>(AllContacts.getName()).from(AllContacts).end(),
new FlowBuilder<Flow>(AllVehicles.getName()).from(AllVehicles).end(),
new FlowBuilder<Flow>(AllInsurance.getName()).from(AllInsurance).end(),
// new FlowBuilder<Flow>(AllCFnsurance.getName()).from(AllCFnsurance).end(),
// new FlowBuilder<Flow>(AllUserTag.getName()).from(AllUserTag).end(),
new FlowBuilder<Flow>(CustomerSalesdate.getName()).from(CustomerSalesdate).end()
// new FlowBuilder<Flow>(AVinnoTel.getName()).from(AVinnoTel).end(),
// new FlowBuilder<Flow>(AllVOHistory.getName()).from(AllVOHistory).end()
).build();
return jobBuilderFactory.get("RsyncAllDataJob")
.incrementer(new RunIdIncrementer())
.start(splitFlow)
.end()
.build();
}
@ResponseBody
String startall() throws ParseException {
if (TimeFlag.getJobRun()) {
System.out.println("Cron Start All Data Rsync Job. But Job Running.");
return "Job Running. wait.....";
}
System.out.println("Url Start All Data Rsync Job.");
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
jobParametersBuilder.addDate("Date", new Date());
JobParameters dateJobParameters = jobParametersBuilder.toJobParameters();
try {
jobLauncher.run(importAllUserJob(), dateJobParameters);
} catch (JobExecutionAlreadyRunningException e) {
e.printStackTrace();
} catch (JobRestartException e) {
e.printStackTrace();
} catch (JobInstanceAlreadyCompleteException e) {
e.printStackTrace();
} catch (JobParametersInvalidException e) {
e.printStackTrace();
}
return "执行完成";
}
public Job importAllUserJob() {
Flow splitFlow = new FlowBuilder<Flow>("splitflow").split(new SimpleAsyncTaskExecutor()).add(
new FlowBuilder<Flow>(AllCITnsurance.getName()).from(AllCITnsurance).end(),
new FlowBuilder<Flow>(AllCustomer.getName()).from(AllCustomer).end(),
new FlowBuilder<Flow>(AllCInsurance.getName()).from(AllCInsurance).end(),
new FlowBuilder<Flow>(AllContacts.getName()).from(AllContacts).end(),
new FlowBuilder<Flow>(AllVehicles.getName()).from(AllVehicles).end(),
new FlowBuilder<Flow>(AllInsurance.getName()).from(AllInsurance).end(),
// new FlowBuilder<Flow>(AllCFnsurance.getName()).from(AllCFnsurance).end(),
// new FlowBuilder<Flow>(AllUserTag.getName()).from(AllUserTag).end(),
new FlowBuilder<Flow>(CustomerSalesdate.getName()).from(CustomerSalesdate).end()
// new FlowBuilder<Flow>(AVinnoTel.getName()).from(AVinnoTel).end(),
// new FlowBuilder<Flow>(AllVOHistory.getName()).from(AllVOHistory).end()
).build();
return jobBuilderFactory.get("RsyncAllDataJob")
.incrementer(new RunIdIncrementer())
.start(splitFlow)
.end()
.build();
}
相关文章推荐
- 同一套代码部署多个实例来并行完成某项任务,且避免重复执行
- 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知)
- Jenkins pipeline 并行执行任务流
- Java7提供的并行执行任务框架:Fork、Join框架
- Java使用Fork/Join框架来并行执行任务
- 使用FutureTask执行并行耗时任务
- Java使用Fork/Join框架来并行执行任务
- JBPM4.3总结五,jbpm详细讲解,案例,会签,并行执行任务等
- c#执行并行任务之Parallel与TaskFactory
- hive实现任务并行执行
- 我的Java开发学习之旅------>Java使用Fork/Join框架来并行执行任务
- 重新想象 Windows 8 Store Apps (43) - 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
- Jenkins 在声明式 pipeline 中并行执行任务
- c#执行并行任务之Parallel与TaskFactory
- 在J2EE中使用 Work Manager 规范执行并行任务
- Java7任务并行执行神器:Fork&Join框架
- [Hive]Hive调优:让任务并行执行
- 使用ThreadPoolExecutor并行执行独立的单线程任务
- Java使用Fork/Join框架来并行执行任务
- Java中使用ThreadPoolExecutor并行执行独立的单线程任务