截至目前,我正在运行单一工作的春季批次。那么现在我想运行多个彼此不同的工作意味着不同的功能。 在我的配置文件中,我配置了两个具有不同ID和不同名称的作业。 现在我必须经营这些工作。你能告诉我我该怎么办? 我怀疑的是 在我的java类中,我编写了这个代码来运行批处理。
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
CompositeWriter compositeWriter=new CompositeWriter();
JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();
Long startTime=System.nanoTime();
JobExecution execution = jobLauncher.run(job, jobParameters);
对于其他工作,我如何调用jobLauncher的run方法。
我的配置文件是
<bean id="pagingItemReader" class="com.tcs.UserRowMapper">
</bean>
<job id="testJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step1">
<tasklet>
<chunk reader="pagingItemReader" processor="testApp" writer="itemWriter"
commit-interval="1" />
</tasklet>
</step>
</job>
<job id="testJob2" xmlns="http://www.springframework.org/schema/batch">
<step id="step2">
<tasklet>
<chunk reader="itemReaderForNotification" processor="processforNoticeHeader" writer="itemUpateForNoticeHeader"
commit-interval="1" />
</tasklet>
</step>
</job>
答案 0 :(得分:1)
您发布的代码似乎不完整;但你可以通过它的id从配置中获取作业,不是吗?像这样:
ApplicationContext context = new ClassPathXmlApplicationContext(config);
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job1 = (Job) context.getBean("testJob");
Job job2 = (Job) context.getBean("testJob2");
JobExecution execution1 = jobLauncher.run(job1, new JobParameters());
System.out.println("Exit Status : " + execution1.getStatus());
JobExecution execution2 = jobLauncher.run(job2, new JobParameters());
System.out.println("Exit Status : " + execution2.getStatus());