2016-04-07 16 views
5

Bir MySQL veritabanını beslemek için bir MongoDB veritabanıyla çalışan bir yayın önyükleme kümem var. Veritabanımın yaklaşık yarısı program tarafından işleniyor ancak günlüklerimde yalnızca 200 hata gibi bir şey var.MongoDB veri tabanının yalnızca yarısı yay kümesinde işleniyor

BATCH_STEP_EXECUTION tablosu, veritabanında 11800 belgeye sahip olmamasına rağmen, işlemin iyi gittiğini (durumun tamamlandığını) ve bir READ_COUNT 5692 görüntülendiğini bildirir.

Tüm veritabanından geçmemesi için yapılandırmadaki bir şeyi unuttum mu?

@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(); 
    } 
} 
+0

Başarısız bir şekilde adım adım hataTolerant param eklemeyi denedim – Labe

+0

Sadece bir düşünce, ama mogodb keskin bir dağıtım var mı? –

+0

Hola! Ne yaptığınız hakkında bazı sorularım var: 1) MySQL'i mongo koleksiyonundan veri ile beslediğinizi söylüyorsunuz, belirli bir verideki bir başarısızlığın programın çökmesi olduğunu mu düşünüyorsunuz? 2) 200 hata nedir? –

cevap

1

Tamam ben bir şey verilerle yanlış olduğunda benim dönüştürücü null yerine boş bir POJO döndürerek bugün çözüldü:

İşte benim yapılandırma sınıftır. Sonra sadece işlemciye atladım.

Yine de karşılaşılan ilk boşta durmaması garip bir şey. Belki yığın elemanların bazı paralelleşmesi beni yanlış okuyordu