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)