2014-12-16 3 views
1

Возможно ли динамическое конфигурирование Job в spring-batch?Динамически настраивать задание в весенней партии

Вот что я хочу сделать. Я создал несколько различных ItemReader, ItemWriter, как показано ниже:

  • FlatFileItemReader
  • DBItemReader
  • FlatFileItemWriter
  • DBItemWriter
  • .....
  • XMLItemWriter

Я хочу для того, чтобы nd динамически сопоставлять их при создании пакетного задания. Например, предположим, что мне нужно задание с двумя шагами. Первый этап содержит 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

Spring Batch предоставляет java-конфигурацию для построения заданий через Java-код вместо XML. Используя предоставленные сборщики, вы можете динамически создавать задания по мере необходимости. Я настоятельно рекомендую использовать этот метод вместо проводки ChunkOrientedTasklet вручную, так как в этом конкретном случае происходит довольно немного Tasklet.

Лучшее место для начала работы с конфигурацией java Spring Batch находится в Spring Batch guide: http://spring.io/guides/gs/batch-processing/. Это 15 минут ходьбы, начав с Spring Batch с помощью таких инструментов, как Spring Boot и java-конфигурация.

+0

ОК ... прежде чем я переключу свой фокус на конфигурацию на основе Java .. может ли эта проблема также быть решена путем параметризации чтения и записи в XML? Если да, будет ли какой-нибудь недостаток? – hashbrown

+0

Я не верю, что мы поддерживаем возможность параметризации этих полей. Как вы говорите, насколько динамичны они вам нужны? Это может иметь смысл определить набор шагов и просто выбрать, какой из них выполнить во время выполнения. –

+0

Извините за то, что вы новичок, но из набора заранее определенных шагов в XML, как я могу приложить один соответствующий «шаг» для выполнения во время выполнения? – hashbrown

Смежные вопросы