best practice for directory polling

Posted by Hieu Lam on Stack Overflow See other posts from Stack Overflow or by Hieu Lam
Published on 2010-03-08T09:52:51Z Indexed on 2010/03/08 10:06 UTC
Read the original article Hit count: 477

Filed under:
|
|

Hi all,

I have to do batch processing to automate business process. I have to poll directory at regular interval to detect new files and do processing. While old files is being processed, new files can come in. For now, I use quartz scheduler and thread synchronization to ensure that only one thread can process files.

Part of the code are:
application-context.xml
<bean id="methodInvokingJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="documentProcessor" />
<property name="targetMethod" value="processDocuments" />
</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 xmlDocuments =
documentManager.getFileNamesFromFolder(incomingFolderPath);

// loop over the files and processed unlock files.
for (String xmlDocument : xmlDocuments) {
processDocument(xmlDocument);
}
}
finally {
processing = false;
}
}
}
}

For the current code, I have to prevent other thread to process files when one thread is processing. Is that a good idea ? or we support multi-threaded processing. In that case how can I know which files is being process and which files has just arrived ? Any idea is really appreciated.

© Stack Overflow or respective owner

Related posts about batch

Related posts about processing