2015-10-04 3 views
-1

У меня есть пружинные пакетное задание со следующим определением:Как запустить весной пакетное задание в нескольких потоках одновременно

<batch:step id="step1"> 
     <batch:tasklet task-executor="simpleTaskExecutor"> 
      <batch:chunk reader="itemReader" processor="itemProcessor" 
       writer="itemWriter" > 
      </batch:chunk> 
     </batch:tasklet> 
    </batch:step> 
    <bean id="itemReader" class="CustomReader"> 
</bean> 

пользовательского читателем, читает строку из базы данных и передать его в процессор для дальнейшей обработки ,

Моя проблема заключается в том, что я хочу иметь несколько потоков одновременно для запуска этой работы одновременно (каждый читает строку и процесс). на основе документации я использовал taskExecutor, но это не сработало.

примечание: мой сценарий не подходит с разделителем.

ответ

1

Что вы подразумеваете под "не работает"?

Если вы хотите читать и обрабатывать одну запись с каждым потоком, вам необходимо иметь «фиксированный интервал» точно одного. (http://docs.spring.io/spring-batch/reference/html/configureStep.html)

Но обратите внимание: поскольку несколько потоков вызовут считывающее устройство и записывающее устройство (они однотонные экземпляры) параллельно, вы должны убедиться, что обе потокобезопасны. Простейшей задачей было бы синхронизировать чтение, соотв. метод записи читателя и писателя.

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