package
com.example.multibatchspringbootapp.batch;
import
javax.batch.api.chunk.ItemReader;
import
javax.batch.api.chunk.ItemWriter;
import
org.springframework.batch.core.Job;
import
org.springframework.batch.core.Step;
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.support.RunIdIncrementer;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration;
@Configuration
@EnableBatchProcessing
public
class
CommonBatchConfig {
@Autowired
private
JobBuilderFactory jobBuilderFactory;
@Autowired
private
StepBuilderFactory stepBuilderFactory;
@Autowired
private
ItemReader<String> codingChallengesReader;
@Autowired
private
ItemWriter<String> codingChallengesWriter;
@Autowired
private
ItemReader<String> interviewExamContentReader;
@Autowired
private
ItemWriter<String> interviewExamContentWriter;
@Autowired
private
ItemReader<String> articlesPracticeQuestionsReader;
@Autowired
private
ItemWriter<String> articlesPracticeQuestionsWriter;
@Autowired
private
ItemReader<String> userEngagementMetricsReader;
@Autowired
private
ItemWriter<String> userEngagementMetricsWriter;
@Bean
public
Step codingChallengesStep() {
return
stepBuilderFactory.get(
"codingChallengesStep"
)
.<String, String>chunk(
10
)
.reader(codingChallengesReader)
.writer(codingChallengesWriter)
.build();
}
@Bean
public
Job codingChallengesJob() {
return
jobBuilderFactory.get(
"codingChallengesJob"
)
.incrementer(
new
RunIdIncrementer())
.start(codingChallengesStep())
.build();
}
@Bean
public
Step interviewExamContentStep() {
return
stepBuilderFactory.get(
"interviewExamContentStep"
)
.<String, String>chunk(
10
)
.reader(interviewExamContentReader)
.writer(interviewExamContentWriter)
.build();
}
@Bean
public
Job interviewExamContentJob() {
return
jobBuilderFactory.get(
"interviewExamContentJob"
)
.incrementer(
new
RunIdIncrementer())
.start(interviewExamContentStep())
.build();
}
@Bean
public
Step articlesPracticeQuestionsStep() {
return
stepBuilderFactory.get(
"articlesPracticeQuestionsStep"
)
.<String, String>chunk(
10
)
.reader(articlesPracticeQuestionsReader)
.writer(articlesPracticeQuestionsWriter)
.build();
}
@Bean
public
Job articlesPracticeQuestionsJob() {
return
jobBuilderFactory.get(
"articlesPracticeQuestionsJob"
)
.incrementer(
new
RunIdIncrementer())
.start(articlesPracticeQuestionsStep())
.build();
}
@Bean
public
Step userEngagementMetricsStep() {
return
stepBuilderFactory.get(
"userEngagementMetricsStep"
)
.<String, String>chunk(
10
)
.reader(userEngagementMetricsReader)
.writer(userEngagementMetricsWriter)
.build();
}
@Bean
public
Job userEngagementMetricsJob() {
return
jobBuilderFactory.get(
"userEngagementMetricsJob"
)
.incrementer(
new
RunIdIncrementer())
.start(userEngagementMetricsStep())
.build();
}
}