【问题标题】:processor with the condition SpringBatch具有条件 Spring Batch 的处理器
【发布时间】:2018-07-27 09:13:13
【问题描述】:

我在 Spring Batch 中有一个结构。 1. xmlItemReader 读取xml,它有一个日期。约会一。 2. 然后有一个处理器应该根据条件if (one <current) 创建一个小于今天的日期列表。 3.然后把这个列表写入txt文件。

1 实现为

@Bean
    public ItemReader<Bic> reader() {
        FlatFileItemReader<Bic> reader = new FlatFileItemReader<Bic>();
        reader.setResource(new ClassPathResource("sample-data.xml"));
        reader.setLineMapper(new DefaultLineMapper<Bic>() {{
            setLineTokenizer(new DelimitedLineTokenizer() {{
                setNames(new String[]{"date"});
            }});
            setFieldSetMapper(new BeanWrapperFieldSetMapper<Bic>() {{
                setTargetType(Bic.class);
            }});
        }});
        return reader;
    }

3 实现为

@Bean
public FlatFileItemWriter itemWriter() {
        return  new FlatFileItemWriterBuilder<Foo>()
                                   .name("itemWriter")
                                   .resource(new FileSystemResource("target/test/output.txt"))
                                   .lineAggregator(new PassThroughLineAggregator<>())
                                   .build();
}

第2步的条件如何实现处理器?

【问题讨论】:

  • 不清楚“创建日期列表”是什么意思。你能描述一下你的处理器的输入和输出是什么吗?

标签: spring spring-batch


【解决方案1】:

在不了解您的类结构的情况下,可以采用以下方式:

  1. 创建新类,例如MyProcessor.java 伪代码如下

    public class MyProcessor implements ItemProcessor<InputData, OutputData>{
    @Override
        public OutputData process(InputData item) throws Exception {
    
        if(item.checkingDate.isBefore(LocalDAteTime.now()){
             log.info("Skipping {}", item);
             return null;
        }
    
     //do your stuff
        return new OutputData();
    }
    

将您的处理器添加到您的作业配置中,例如:

@Bean
Step step1() {
    return stepBuilderFactory.get("step1")
            .listener(dataProcessor)
            .<InputData, OutputData>chunk(100)
            .faultTolerant()
            .reader(reader())
            .processor(new MyProcessor())
            .writer(itemWriter())
            .build();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 2012-10-02
    相关资源
    最近更新 更多