웹 보관 파일 (warc)이 크롤러에 의해 여러 디렉토리에 주기적으로 삭제되는 시나리오가 있습니다. 각 warc 파일은 내부적으로 수천 개의 HTML 파일로 구성됩니다.여러 파일을 동시에 처리하는 방법은 무엇입니까?
이제 이러한 파일을 효율적으로 처리 할 수있는 프레임 워크를 만들어야합니다. Java가 I/O의 병렬 처리 측면에서 확장되지 않는다는 것을 알고 있습니다. 내가 생각하기에이 디렉토리를 스캔하고, 파일 이름을 선택하고, Executor Service 또는 일부 Java 블로킹 대기열에 들어가는 모니터 스레드를 갖는 것입니다. 실행 프로그램 서비스에서 수신하는 작업자 스레드 (I/O 문제의 경우 작은 번호)가 파일을 읽고, HTML 파일을 읽고 각각의 처리를 수행합니다. 이것은 스레드가 동일한 파일에 대해 싸우지 않는지 확인하기위한 것입니다.
성능과 확장 성 측면에서 올바른 접근 방식입니까? 또한 처리 된 파일을 처리하는 방법은 무엇입니까? 이상적으로, 파일은 스레드에 의해 다시 선택되지 않도록 이동되거나 태그되어야합니다. Future 객체를 통해 처리 할 수 있습니까?
답장을 보내 주셔서 감사합니다. 이것은 아마도 새 파일이 디렉토리에 떨어 졌는지 여부를 파악하는 데 도움이되지만 실제로 문제는 해결되지 않습니다. 요구 사항에 따라 일단 파일이 처리되면 파일을 보관 폴더로 옮겨야합니다.작업자 스레드는 작업이 완료되면 파일 이동을 수행 할 수 있지만 기본 스레드에 통보해야합니다. 이유는 작업자 프로세스에서 오류가 발생하는 경우 해당 파일을 다시 재 시도해야한다는 것입니다. – Shamik
@ simeon..this 기능은 jdk 7에서 사용할 수 있지만 여전히 jdk 6입니다. 일부 조사를 할 때 비슷한 기능을 제공하는 jpathwatch라는 유사한 라이브러리를 발견했습니다. 포인터 주셔서 감사. – Shamik