[英]How can I run a batch project with two independent jobs?
我開始在Spring Batch
中創建一個項目,我創建了兩個彼此沒有關系的不同類。
這是NotificationOne.java
class:
@Slf4j
public class NotificationOne {
public NotificationDataOne {
log.info("NotificationDataOne");
}
}
這是NotificationTwo.java
class:
@Slf4j
public class NotificationOTwo {
public NotificationDataTwo {
log.info("NotificationDataTwo");
}
}
這是我目前擁有的配置,但我不知道如何完成它:
@Configuration
@EnableBatchProcessing
public class JobBatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public Job jobOne(NotificationOne notificationOne) {
return jobBuilderFactory.get("jobOne").incrementer(new RunIdIncrementer())
.listener(notificationOne).flow(null).end().build();
}
}
我需要的是能夠啟動這兩個類並在配置 class 中對其進行配置。
唯一的事情是執行 class 但我不知道如何創建或修改配置案例。 請你能告訴我如何啟動 Job 嗎?
這是一個快速的 hello world 作業以及如何從main
方法啟動它:
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableBatchProcessing
public class MyJobConfiguration {
@Bean
public Job job(JobBuilderFactory jobs, StepBuilderFactory steps) {
return jobs.get("job")
.start(steps.get("step")
.tasklet((contribution, chunkContext) -> {
System.out.println("hello world");
return RepeatStatus.FINISHED;
})
.build())
.listener(new NotificationOne())
.build();
}
public static void main(String[] args) throws Exception {
ApplicationContext context = new AnnotationConfigApplicationContext(MyJobConfiguration.class);
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
Job job = context.getBean(Job.class);
jobLauncher.run(job, new JobParameters());
}
static class NotificationOne implements JobExecutionListener {
@Override
public void beforeJob(JobExecution jobExecution) {
System.out.println("NotificationOne.beforeJob");
}
@Override
public void afterJob(JobExecution jobExecution) {
System.out.println("NotificationOne.afterJob");
}
}
}
這打印:
NotificationOne.beforeJob
hello world
NotificationOne.afterJob
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.