Viktor Khoroshko created CAMEL-11656:
----------------------------------------

             Summary: Support default directory sorter for FileConsumer
                 Key: CAMEL-11656
                 URL: https://issues.apache.org/jira/browse/CAMEL-11656
             Project: Camel
          Issue Type: Wish
    Affects Versions: 2.19.0
            Reporter: Viktor Khoroshko


Hello,

The current way of sorting consumed files isn't very flexible due to how it's 
implemented:

Files are sorted AFTER they're added to in progress repository what in 
combination with *maxMessagesPerPoll* set to be > 0  and 
*eagerLimitMaxMessagesPerPoll* set to false forces the 
*removeExcessiveInProgressFiles* call - which in case of persistent idempotent 
repository used causes redundant calls to a database. 

This is not only the issue.

In my case I have a logic in a custom file filter that a file shouldn't be 
processed if a file with a same prefix is already in process while still those 
files should be processed in a specified order. 

The issue is that since sorting is performed after each file is added to in 
progress repository and before added there a file should be accepted by a 
filter but it will be not  - as a previous file with a same prefix has already 
been added to in progress repo.

Default sorting would solve this issue. 

It would be great if default sorter can be specified for *FileConsumer* in the 
pollDirectory method:

{code:java}
  log.trace("Polling directory: {}", directory.getPath());
        File[] dirFiles = directory.listFiles();
        if (dirFiles == null || dirFiles.length == 0) {
            // no files in this directory to poll
            if (log.isTraceEnabled()) {
                log.trace("No files found in directory: {}", 
directory.getPath());
            }
            return true;
        } else {
            // we found some files
            if (log.isTraceEnabled()) {
                log.trace("Found {} in directory: {}", dirFiles.length, 
directory.getPath());
            }
        }
        List<File> files = Arrays.asList(dirFiles);
{code}







--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to