2014-10-10 2 views
1

봄 일괄 통합 문서, 단계를 청크와 분할 원격 사용권장 접근 방식은

http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#externalizing-batch-process-execution

우리의 작업이 간단 리더/프로세서/라이터 단계로 구성하지 않는 참조하는 방법을 설명합니다. 그래서 우리는 단순히 모든 작업을 병렬로 실행하고 각각의 작업을 서로 다른 파티션으로 나누어서 사용하고자합니다.

스프링 배치에 이미이 패턴이 있습니까? 아니면 작업을 시작하는 노예 풀을 유지하기 위해 내 JobLauncher를 구현해야합니까?

건배, 메노

답변

2

스프링 배치는 특히 작업 오케스트레이션 (귀하의 질문에 근본적으로 약이다) 처리하지의 위치를합니다. 다음과 같은 몇 가지 방법이 있습니다.

  • 분산 스케줄러 - 대부분의 분산 스케줄러는 여러 노드에서 작업을 실행할 수 있습니다. Quartz는 예를 들어 분산 모드를 가지고있다.
  • 오케스트레이션을위한 원격 파티셔닝 사용 - 원격 파티셔닝은 전체 스프링 배치 단계를 슬레이브로 실행합니다. 이러한 단계가 작업을 실행하는 작업 단계 일 수는 없습니다.
  • 메시지 구동 작업 실행 - Spring Batch Integration (Spring Batch의 하위 모듈)은 메시지를 통해 작업을 시작할 수있는 기능을 제공합니다. 또 다른 접근법은 작업을 시작하기 위해 메시지를 기다리는 대기열을 수신하는 슬레이브 콜렉션을 갖는 것입니다. 노예간에로드 균형 조정과 같은 작업을 처리해야하지만 작업 편성을 처리하는 또 다른 일반적인 방법입니다.
+0

저는 작업 간 작업 흐름에 관심이 없기 때문에 작업 구성보다는 작업 실행이 아닌가요? 이미 메시지 기반 작업 시작을 위해 Spring Batch Integration을 사용합니다. 그러나 병렬 작업을 가장 잘 구현하는 방법을 생각하기 시작하면서 여러 개의 Job Launcher를 각 슬레이브에 하나씩 가지고 있는지 여부를 확신 할 수 없었고 단일 Job Repository를 공유했습니다. 또는 작업 분산/균형 조정을 처리 할 수있는 하나의 주 작업 시작 프로그램을 보유 할 수도 있습니다. 그러나 슬레이브는 작업 실패/재시작을 위해 작업 컨텍스트를 저장하기 위해 어쨌든 공유 작업 저장소가 필요합니다. 작업 단계를 사용한 원격 파티션 작업과 동일합니다. 그러므로 내 질문. – Menno

관련 문제