首页 文章

以 Spring 季批量动态配置作业

提问于
浏览
1

是否可以在 spring-batch 中动态配置 Job

这就是我想要做的 . 我创建了几个不同的 ItemReaderItemWriter 如下:

  • FlatFileItemReader

  • DBItemReader

  • FlatFileItemWriter

  • DBItemWriter

  • .....

  • XMLItemWriter

我希望能够在创建批处理作业时动态混合和匹配它们 . 例如,假设我需要一个有2个步骤的Job . 第一步包含 Tasklet 用于预处理 . 第二步将使用我的读写器进行基于块的数据处理 Tasklet ....这样的事情:

// define job parameters
JobParametersBuilder parameters = new JobParametersBuilder();

// create two steps
TaskletStep step1 = new TaskletStep(); 
TaskletStep step2 = new TaskletStep();
step1.setName("PreProcessingStep");
step2.setName("ChunkReadWriteStep");

// create two TaskLets
Tasklet tasklet1 = new PreProcessingTasklet();
Tasklet tasklet2; <------ HOW DO I ATTACH MY reader/writer IN THIS TASKLET??

// attach the TaskLet to the step
step1.setTasklet(tasklet1);
step2.setTasklet(tasklet2);

// attach the steps to the job
SimpleJob job = new SimpleJob("MyBatchJob");
job.addStep(step1);
job.addStep(step2); 

jobLauncher.run(job, parameters.toJobParameters());

在XML中,我可以像下面这样做:

<job id="MyBatchJob">
    <step id="preprocessing" next="readWriteStep">
        <tasklet ref="PreProcessingTasklet"/>
    </step>
    <step id="readWriteStep">
        <tasklet>
            <chunk reader="FlatFileItemReader" writer="DBItemWriter"/>
        </tasklet>
    </step>
</job>

但是,我如何以编程方式执行此操作?

1 回答

  • 1

    Spring Batch通过java代码而不是XML提供基于java的配置来构建作业 . 通过使用提供的构建器,您可以根据需要动态构建作业 . 我强烈建议使用这种方法而不是手工连接 ChunkOrientedTasklet ,因为在那个特定的 Tasklet 中有相当多的进展 .

    开始使用Spring Batch的java配置的最佳位置是Spring Batch指南:http://spring.io/guides/gs/batch-processing/ . 使用Spring Boot和java配置等工具开始使用Spring Batch是一个15分钟的步骤 .

相关问题