Ich habe einen Spring-Boot-Batch, der mit einer MongoDB-Datenbank arbeitet, um eine MySQL-Datenbank zu versorgen. Ich habe etwa die Hälfte meiner Datenbank von dem Programm verarbeitet, aber nur etwa 200 Fehler in meinen Protokollen.Nur die Hälfte der MongoDB-Datenbank wird im Spring-Batch verarbeitet
Die BATCH_STEP_EXECUTION
Tabelle ließ mich wissen, dass der Prozess gut lief (Status abgeschlossen) und eine READ_COUNT
von 5692 anzeigen, obwohl ich 11800 Dokumente in der Datenbank habe.
Habe ich etwas in der Konfiguration vergessen, um zu verhindern, dass nicht die gesamte Datenbank durchlaufen wird?
Hier ist meine Konfigurationsklasse:
@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();
}
}
Ich habe versucht, die fehlgeschlagenen Parameter zu meinem Schritt ohne Erfolg hinzufügen – Labe
Nur ein Gedanke, aber haben Sie eine geschickte Bereitstellung von Mogodb? –
Hola! Ich habe einige Fragen zu dem, was du tust: 1) Du sagst, dass du MySQL mit Daten aus einer Mongo-Sammlung fütterst. Denkst du, dass ein Fehler mit bestimmten Daten das Programm zum Absturz bringt? 2) Was sind diese 200 Fehler? –