Java 对目录内容的骆驼式连续排序读取

Java 对目录内容的骆驼式连续排序读取,java,apache-camel,Java,Apache Camel,我试图读取某个目录中的所有文件,并对它们的主体进行操作。 有很多文件,每分钟都有新文件添加到目录中 当我启动应用程序时,目录中有一组文件。它们是按排序顺序处理的,但当新文件添加到目录时,它们会添加到将要处理的文件排序队列的后面 有办法解决这个问题吗?这就是Camel中存在重排序器的原因吗 当前设置: <camel:endpoint id="store.in" uri="file:${service.in}?readLock=true&amp;recursive=true&a

我试图读取某个目录中的所有文件,并对它们的主体进行操作。 有很多文件,每分钟都有新文件添加到目录中

当我启动应用程序时,目录中有一组文件。它们是按排序顺序处理的,但当新文件添加到目录时,它们会添加到将要处理的文件排序队列的后面

有办法解决这个问题吗?这就是Camel中存在重排序器的原因吗

当前设置:

<camel:endpoint id="store.in" uri="file:${service.in}?readLock=true&amp;recursive=true&amp;moveFailed=${service.error}&amp;sortBy=reverse:file:name" />

<camel:route>
    <camel:from uri="ref:store.in" />
        <camel:resequence>
            <camel:simple>filename</camel:simple>
            <camel:to uri="bean:parser?method=parseStream" />
            <camel:to uri="log:com.foo.store.parsefile?level=INFO" />
            <camel:process ref="storeProcessor" />
        </camel:resequence>
</camel:route>

文件名

这的确是一个有趣的发现。您希望它的行为有点像优先级队列,文件名顺序是优先级。很公平。看看这个选项,尽管我还没有尝试过,但它似乎对你有帮助。也许您还需要降低maxMessagesPerPoll以获得所需的结果。是的,一次只抓取一条消息,maxMessagesPerPoll=1,然后当Camel处理下一条消息时,它将调用。MaxMessageSperpull应设置为false,否则反向排序不起作用。