лучшая практика для опроса каталогов

Я должен сделать пакетную обработку, чтобы автоматизировать бизнес-процесс. Я должен регулярно опрашивать каталог, чтобы обнаружить новые файлы и выполнить обработку. Пока старые файлы обрабатываются, могут поступать новые файлы. Сейчас я использую кварцевый планировщик и синхронизацию потоков, чтобы гарантировать, что только один поток может обрабатывать файлы.

Часть кода:

Приложение-context.xml

<bean id="methodInvokingJob"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><br/>
  <property name="targetObject" ref="documentProcessor" /><br/>
  <property name="targetMethod" value="processDocuments" /><br/>
</bean>

DocumentProcessor
.....

public void processDocuments() { 
  LOG.info(Thread.currentThread().getName() + " attempt to run.");
  if (!processing) {
     synchronized (this) {
        try {
           processing = true;
           LOG.info(Thread.currentThread().getName() + " is processing");
           List<String> xmlDocuments = documentManager.getFileNamesFromFolder(incomingFolderPath);               
           // loop over the files and processed unlock files.
           for (String xmlDocument : xmlDocuments) {
              processDocument(xmlDocument);
           }
        }
        finally {
           processing = false;
        }
     }
  }
}

Для текущего кода я должен запретить другим потокам обрабатывать файлы, когда один поток обрабатывает. Это хорошая идея ? или мы поддерживаем многопоточную обработку. В таком случае, как я могу узнать, какие файлы обрабатываются и какие файлы только что поступили? Любая идея действительно ценится.

Ответы на вопрос(2)

Ваш ответ на вопрос