2011-12-13 2 views
0

다음과 같은 사용 사례가 있습니다. 많은 수의 파일을 처리해야합니다. 각각의 처리는 다음과 비슷한스프링 배치에서 여러 파일을 순차적으로 처리하기

1) 판독 파일

2) 동작을 수행 (a) 컨텐츠

3) 수행 동작에 대한 (b) 컨텐츠에

4) 파일의 삭제) 콘텐츠

... 

N을 조작 ​​(c)를 수행

스프링 배치는 한 가지 예외를 제외하고는이 문제에 대한 좋은 해결책 인 것 같습니다. 1 단계에서 모든 파일을 읽지 않고 2 단계로 모두 넘기고 싶습니다. 메모리를 많이 사용하기 때문에 2 단계로 넘어갑니다.

EDIT : 내 파일을 메모리가 아닌 DB에 커밋합니다. 이 때문에 파일을 하나씩 또는 일괄 처리하는 것을 선호합니다. 내 말은 : 단일 파일/배치 (파일/배치가 마지막 단계에서 제거되고 메모리가 정리 됨)에서 모든 단계를 실행 한 후 다음 파일/배치로 진행하는 것입니다.

스프링 배치에는 모든 단계를 반복해서 여러 번 실행할 수있는 메커니즘이 있습니까? 또는 파일이 다 떨어질 때까지 동일한 작업을 여러 번 실행해야합니까?

감사와 안부, 스프링 배치 문서에 피터

답변

1

간단한 N 파일 작업의 경우 N 개의 작업을 실행해야하며 각각 하나의 파일 이름에 JobParameter이 전달됩니다. 각 처리 단계는 스프링 배치와 관련하여 표현할 수 없지만 CompositeItemProcessor을 사용하여 프로세서를 연결할 수 있습니다.

+0

죄송합니다,이 질문은 조금 구식이지만, 여기에 무엇을 쓰고 있는지 정확히 내가 결국 한 :) 감사합니다 – machinery

2

multi-file input

이 한 단계 작동에 따라 처리하고 어떤이는 할 것입니다 것은입니다 :

  • 파일의 목록을 작성 위치
  • 첫 번째 파일 열기, 끝까지 읽기/끝내기, 파일 닫기
  • 다음 열기 ... 등등
+0

흠 ... 고마워요, 어떤 경우에는 조금 도움이 될 것입니다.하지만 여러 단계를 실행해야하는 경우 여전히 모든 파일을 한 번에로드해야합니다. 그리고 이것은 내 기억을 어수선하게하기 위해서가 아니라 피하고 싶습니다. 팁을 주셔서 감사합니다 :) – machinery

+0

파일을 순차적으로 처리하지 않고 개별 파일이 메모리에 완전히 없다면 구현시 파일 (포인터) 및 버퍼링 된 스트림이있는 표준 Java 메커니즘을 사용하므로 읽기 항목 * 확약 비율 만 메모리에 보관 됨 (예 : 커밋 율 1000, 1000 개의 읽음 의미, 항목으로 변환 됨) –

+0

아, 죄송합니다. 내 사례를 완전히 설명하지 않은 것으로 보입니다. 내가 읽은 파일 내용을 메모리에 저장합니다. 이것은 내가 단일 단계에서 모든 단계를 실행하고 다음 단계에서 모든 단계를 실행하는 것을 선호하는 이유입니다 (마지막 단계에서 파일을 제거하기 때문에). – machinery

관련 문제