Как исправить шаг пакетного раздела Spring, который пропускает шаг подчиненного? - PullRequest
0 голосов
/ 06 января 2019

У меня есть подпружиненная партия, которая будет обрабатывать дату в базе данных с обработанным столбцом, установленным на флаг N. Есть подчиненный шаг и главный шаг. Главный шаг - это раздел, при этом будет запущено 10 разделенных подчиненных шагов. Теперь проблема в том, что шаг раздела запущен, но он пропустит шаг slave и приведет к успешному выводу.

У меня уже есть другой подобный шаг раздела, работающий правильно. Все настройки одинаковы. Просто другое имя шага, репозиторий в считывателе элементов и другая логика в итепроцессоре и т. Д.

Я предоставлю код пресудо

//item reader
itemreader(@Value("stepExecutionContext[to]" long to),@Value("stepExecutionContext[from]" long from),@Value("stepExecutionContext[id]") long id){
   logger("partition id: {} process from: {} to: {}",id,to,from);
   //logic, read chunk from to to
}

//item processor and writer, not much to say, just business logic.

//partitioner
public Map<String,ExecutionContext> partition(int grideSize){
    Map<String,ExecutionContext> map = new HashMap<>();
    int from = 1;
    int range = 10;
    for(i-gridSize) {
        ExecutionContext context = new ExecutionContext();
        context.put("from",from);
        context.put("to",from+range);
        from+=range;
        map.put(partitionkey + "i");
    }
    return map;
}

//partition step
step partitionStep(){
    return this.stepBuilderFactory.get("step1.master")
       .partitioner("step1", partitioner)
       .step(step1())
       .gridSize(10)
       .taskExecutor(taskExecutor)
       .build();
}

//step1
step step1(){
    return this.stepBuilderFactory.get("step1")
        <pojo,pojo> chunk(1)
        .reader(itemreader(null,null,null))
        .processor(itemprocessor())
        .writer(itemwriter())
        .build()
}

//job
job partionJob(){
    return this.jobBuilderFactory.get("partitionJob")
           .start(partitionStep())
           .build();
}

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

В моей базе данных в таблице batch_step_execution показаны 1 главный шаг (шаг разделения) и 10 подчиненный шаг (разделенный шаг), что я и ожидал, но для шага ведомого счетчик чтения равен 0, чего не должно быть, потому что в Таблица batch_step_execution_context, информация о разделителе отображается правильно, например

"Идентификатор": 0, "от": 1, "к": 10

itemreader должен прочитать от 1 до 10 и передать его в itemprocessor, а затем itemwriter сохранить его.

Интересно, что случилось, вся информация сохраняется в мета-таблице весеннего пакета, почему шаг подчиненного устройства все еще пропускается? карта от разделителя совсем не пуста.

Нужна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...