我有Job
查看配置表,我希望它使用表中的值触发每个配置条目Job
。
第一个Job
由单个Tasklet
组成,它执行配置表查找,然后每个条目触发后续Job
。
母亲Job
代码:
@Configuration
public class RunProcessesJobConfig {
... // steps, jobs factory init
@Autowired
private Tasklet runProcessTask;
@Bean
public Step runProcessStep() {
return steps.get("runProcessStep")
.tasklet(runProcessTask)
.build();
}
@Bean
public Job runProcessJob() {
return jobs.get("runProcessJob")
.start(runProcessStep())
.build();
}
}
我目前正在尝试实施的方法是将JobLauncher
和我需要的Job
自动装入Tasklet
并从那里运行Job
。< / p>
'RunProcessTask' - 自动连接到上面的作业配置:
@Autowired
Job myJob;
@Override
public RepeatStatus execute(StepContribution sc, ChunkContext cc) throws Exception {
List<DeployCfg> deployCfgs = da.getJobCfgs();
for (DeployCfg deployCfg : deployCfgs) {
String cfg1 = deployCfg.getCfg1();
String cfg2 = deployCfg.getCfg2();
String cfg3 = deployCfg.getCfg3();
// trigger job per config
new JobParametersBuilder()
.addString("cfg1", cfg1)
.addString("cfg2", cfg2)
.addString("cfg3", cfg3);
final JobExecution jobExec = jobLauncher.run(myJob, new JobParameters());
}
return RepeatStatus.FINISHED;
}
当我尝试执行母亲Job
时,TransactionSuspensionNotSupportedException: Transaction manager [org.springframework.batch.support.transaction.ResourcelessTransactionManager] does not support transaction suspension
行出现jobLauncher.run(...)
错误。
我想在Spring Batch的事务管理器中运行另一个Job中的Job。关于如何做到这一点的任何想法?
其他版本信息:
spring-boot-starter-parent version 1.5.9.RELEASE
spring-boot-starter-batch