2014-04-29 18 views
5

Tôi đã triển khai phân đoạn lô xuân cho một bước duy nhất trong đó một bước chính ủy nhiệm công việc của nó cho một số luồng nô lệ hơn là được thực thi song song. Như được hiển thị trong hình dưới đây (Tham khảo Spring docs) enter image description here Bây giờ nếu tôi có nhiều bước sẽ được thực hiện song song? Làm thế nào để cấu hình chúng trong cấu hình hàng loạt? cấu hình hiện tại của tôi làPhân đoạn mùa xuân Phân vùng với nhiều bước song song?

<batch:job id="myJob" restartable="true" job-repository="jobRepository" > 
     <batch:listeners> 
      <batch:listener ref="myJoblistener"></batch:listener> 
     </batch:listeners> 

     <batch:step id="my-master-step"> 
      <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler"> 
      </batch:partition> 
     </batch:step> 
    </batch:job> 

    <batch:step id="my-step" > 
     <batch:tasklet ref="myTasklet" transaction-manager="transactionManager" > 
     </batch:tasklet> 
     <batch:listeners> 
      <batch:listener ref="myStepListener"></batch:listener> 
     </batch:listeners> 
    </batch:step> 

sơ đồ kiến ​​trúc của tôi nên giống như hình ảnh sau: enter image description here

Tôi không chắc chắn ngay cả khi nó có thể sử dụng những ý tưởng mùa xuân batch.Any hoặc Ta là đường đi trên đầu của tôi để thực hiện it.Cảm ơn bạn.

+0

Hi, Xem bài đăng này trong đó vạch ra cách sử dụng dòng chảy và các yếu tố elem chia. Tôi đang cố gắng làm chính xác giống như bạn nhưng tôi vẫn còn mắc kẹt với nó. http://javaetmoi.com/2012/12/parallelisation-de-traitements-batchs-spring-batch – emeraldjava

+0

Đây là bài đăng thứ hai tôi tìm thấy liên quan đến chủ đề này. http://forum.spring.io/forum/spring-projects/batch/80527-defining-a-flow-inside-a-partitionstep – emeraldjava

+0

Tôi gặp sự cố tương tự, vui lòng xem http://stackoverflow.com/question/33121176/spring-batch-flowstep-in-partitioner-restart-issue/33125360 # 33125360 – mremond

Trả lời

3

Bạn có thể thử cách sau.

<batch:job id="myJob" restartable="true" job-repository="jobRepository" > 
     <batch:listeners> 
      <batch:listener ref="myJoblistener"></batch:listener> 
     </batch:listeners> 

     <batch:step id="my-master-step"> 
      <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler"> 
      </batch:partition> 
     </batch:step> 
    </batch:job> 

    <batch:step id="my-step" > 
     <batch:job ref="MyChildJob" job-launcher="jobLauncher" 
       job-parameters-extractor="jobParametersExtractor" /> 
     <batch:listeners> 
      <batch:listener ref="myStepListener"></batch:listener> 
     </batch:listeners> 
    </batch:step> 

    <batch:job id="MyChildJob" restartable="false" 
     xmlns="http://www.springframework.org/schema/batch"> 
     <batch:step id="MyChildStep1" next="MyChildStep2"> 
      <batch:tasklet ref="MyChildStep1Tasklet" transaction-manager="transactionManager" > 
      </batch:tasklet> 
     </batch:step> 

     <batch:step id="MyChildStep2" next="MyChildStep3"> 
      <batch:tasklet ref="MyChildStep2Tasklet" transaction-manager="transactionManager" > 
      </batch:tasklet> 
     </batch:step> 

     <batch:step id="MyChildStep3"> 
      <batch:tasklet ref="MyChildStep3Tasklet" transaction-manager="transactionManager" > 
      </batch:tasklet> 
     </batch:step> 

    </batch:job> 
+0

Tôi không nghĩ rằng nó sẽ làm việc ... Bằng cách nhìn vào cấu hình của bạn mỗi tasklet đang chạy một công việc khác .. Đây là không mong muốn .. Tôi cần phải có một công việc hàng loạt duy nhất với hành vi nêu trên .. cảm ơn –

+0

Tôi đã cấu hình cùng một cách và làm việc tốt trong sản xuất. Nếu bạn không cần nó như một công việc riêng biệt, hãy cấu hình nó làm luồng. Luồng chứa tất cả ba bước. –

+0

Hi @ DanglingPiyush.Did bạn giải quyết vấn đề của mình. Tôi có cùng yêu cầu. Bạn có thể giúp tôi không – pppavan

-1

tôi đã yêu cầu tương tự và giải quyết nó bằng cách sử dưới đây yêu cầu

<batch:job id="cycleJob"> 
     <batch:step id="zStep" next="gStep"> 
      <batch:partition partitioner="zPartitioner"> 
       <batch:step> 
        <batch:tasklet throttle-limit="1"> 
         <batch:chunk processor="itemProcessor" reader="zReader" writer="itemWriter" commit-interval="1"> 
         </batch:chunk> 
        </batch:tasklet> 
       </batch:step> 
       <batch:handler task-executor="taskExecutor" grid-size="${maxThreads}" /> 
      </batch:partition> 
     </batch:step> 
     <batch:step id="gStep" parent="zStep" next="yStep"> 
      <batch:partition partitioner="gPartitioner"> 
       <batch:step> 
        <batch:tasklet throttle-limit="1"> 
         <batch:chunk processor="itemProcessor" reader="gReader" writer="itemWriter" commit-interval="1"> 
         </batch:chunk> 
        </batch:tasklet> 
       </batch:step> 
       <batch:handler task-executor="taskExecutor" grid-size="${maxThreads}" /> 
      </batch:partition> 
     </batch:step> 
</batch:job> 
Các vấn đề liên quan