【问题标题】:Conditionally send data to multiple writers in spring batch有条件地将数据发送到spring批处理中的多个写入器
【发布时间】:2019-02-09 11:50:02
【问题描述】:

我的处理器中有一些逻辑,基于此我需要决定是否需要在 TableA (WriterA) 或 TableB(writer) 中写入项目

例如 Item 已归档 type 并且类型的值可以为 A or B 并且基于 type 归档中的值我需要决定我需要在哪个表中写入数据。

【问题讨论】:

    标签: java spring spring-boot spring-batch batch-processing


    【解决方案1】:

    这可以通过使用Classifier 来实现。以下是配置:

    Writer - Writer 将设置 Classifer 来决定我们需要使用哪个 writer。根据 classfiter 输出 writer 将被决定。

    @Bean
    public ItemWriter<Pojo> itemWriter() {
        BackToBackPatternClassifier classifier = new BackToBackPatternClassifier();
        classifier.setRouterDelegate(new MyClassifier());
        classifier.setMatcherMap(new HashMap<String, ItemWriter<? extends Pojo>>() {
            {
                put("A", WriterA);
                put("B", WriterB);
    
            }
        });
        ClassifierCompositeItemWriter<Pojo> writer = new ClassifierCompositeItemWriter<Pojo>();
        writer.setClassifier(classifier);
        return writer;      
    }
    

    分类器

    public class MyClassifier {
    
        @Classifier
        public String classify(Pojo Pojo) {
            return Pojo.getType();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2022-07-04
      • 2015-07-06
      • 2016-10-11
      • 2020-03-31
      相关资源
      最近更新 更多