Ho un batch di avvio di primavera che funziona con un database MongoDB per alimentare un database MySQL. Ho circa la metà del mio database elaborato dal programma ma solo qualcosa come 200 errori nei miei registri.Solo metà del database MongoDB viene elaborato nel batch di primavera
La tabella BATCH_STEP_EXECUTION
mi consente di sapere che il processo è andato a buon fine (stato completato) e di visualizzare un numero READ_COUNT
di 5692 sebbene disponga di 11800 documenti nel database.
Ho dimenticato qualcosa nella configurazione per impedire di non passare attraverso l'intero database?
Qui è la mia classe di configurazione:
@Configuration
@EnableBatchProcessing
@Import(PersistenceConfig.class)
public class BatchConfiguration {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
SessionFactory sessionFactory;
@Bean
@StepScope
public ItemReader<CourseData> reader() {
MongoItemReader<CourseData> mongoItemReader = new MongoItemReader<>();
mongoItemReader.setTemplate(mongoTemplate);
mongoItemReader.setCollection("foo");
mongoItemReader.setQuery("{}");
mongoItemReader.setTargetType(CourseData.class);
Map<String, Sort.Direction> sort = new HashMap<>();
sort.put("_id", Sort.Direction.ASC);
mongoItemReader.setSort(sort);
return mongoItemReader;
}
@Bean
public ItemProcessor<CourseData, MatrixOne> processor() {
return new CourseDataMatrixOneProcessor();
}
@Bean
public ItemWriter<MatrixOne> writer() {
HibernateItemWriter writer = new HibernateItemWriter();
writer.setSessionFactory(sessionFactory);
System.out.println("writing stuff");
return writer;
}
@Bean
public Job importUserJob(JobBuilderFactory jobs, Step s1) {
return jobs.get("importRawCourseJob")
.incrementer(new RunIdIncrementer())
.flow(s1)
.end()
.build();
}
@Bean
@Transactional
public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<CourseData> reader, ItemWriter<MatrixOne> writer, ItemProcessor<CourseData, MatrixOne> processor) {
return stepBuilderFactory.get("step1")
.<CourseData, MatrixOne>chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}
Ho provato ad aggiungere il parametro faultTolerant al mio passaggio senza alcun successo – Labe
Solo un pensiero, ma hai una distribuzione più complessa di mogodb? –
Hola! Ho alcune domande su cosa stai facendo: 1) Dici che stai dando da mangiare a MySQL con i dati di una collezione di mongo, pensi che un errore con un dato particolare mi faccia bloccare il programma? 2) Quali sono questi 200 errori? –