복붙노트

[SPRING] 큰 파일을 처리하기 위해 Spring 배치를 사용하는 최선의 접근법

SPRING

큰 파일을 처리하기 위해 Spring 배치를 사용하는 최선의 접근법

나는 그것을 처리하기 위해 큰 파일을 다운로드하기 위해 Spring 배치를 사용하고 있습니다. 시나리오는 매우 간단합니다.

1. Download the file via http
2. process it(validations,transformations)
3. send it into queue

이 상황을 처리하기위한 최선의 방법을 찾고 있습니다.

Tasklet을 만들어 로컬에서 파일을 다운로드하고 정기적 인 단계를 통해 처리하기 시작해야합니까? 이 경우 필자는 임시 파일 관련 문제를 고려해야합니다. (내가 삭제되었는지 확인하고 다른 임시 파일 이름을 덮어 쓰지 않도록하십시오.)

다른 한편으로는 그것을 다운로드하여 메모리에 보관할 수 있지만, 많은 작업을 실행하면 매우 빨리 메모리가 부족하다는 것을 두려워하는 것보다 두려운 것입니다.

이 시나리오를 어떻게 만들겠습니까? 작업 표를 사용해야합니까?

고맙습니다.

해결법

  1. ==============================

    1.큰 파일이있는 경우에는 디스크가 아닌 다른 좋은 이유가없는 한 디스크에 저장하는 것이 좋습니다. 파일을 디스크에 저장하면 오류가 발생할 경우 파일을 다시 다운로드 할 필요없이 작업을 다시 시작할 수 있습니다.

    큰 파일이있는 경우에는 디스크가 아닌 다른 좋은 이유가없는 한 디스크에 저장하는 것이 좋습니다. 파일을 디스크에 저장하면 오류가 발생할 경우 파일을 다시 다운로드 할 필요없이 작업을 다시 시작할 수 있습니다.

    Tasklet과 Spring Integration과 관련하여 우리는 일반적으로 FTP 기능을 이미 사용할 수 있으므로이 유형의 기능에 대해 Spring Integration을 권장합니다. 즉, Spring XD는 FTP 기능을 위해 Tasklet을 사용하기 때문에이 방법을 사용하는 것은 드문 일이 아닙니다.

    Spring Batch와 Spring Integration의 통합에 관한 좋은 비디오는 Gunnar Hillert와 SpringOne2GX에서 전한 이야기입니다. 전체 동영상은 https://www.youtube.com/watch?v=8tiqeV07XlI에서 확인할 수 있습니다. Spring Batch 이전에 FTP 용 Spring Batch Integration을 사용하는 방법에 대해 설명하는 섹션은 약 29:37에 있습니다.

  2. ==============================

    2.나는 아래 예제가 당신의 문제에 대한 고전적인 해결책이라고 믿는다. http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#launching-batch-jobs-through-messages

    나는 아래 예제가 당신의 문제에 대한 고전적인 해결책이라고 믿는다. http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#launching-batch-jobs-through-messages

  3. from https://stackoverflow.com/questions/27729750/best-approach-using-spring-batch-to-process-big-file by cc-by-sa and MIT license