Camel 文件语言 SortBy 日期模式系统时间或文件名模式?

Camel File language SortBy date pattern system time or file name pattern?

我需要通过另一种方式对 ftp 目录进行排序,我正在使用 sortBy=file:modifed 选项。但是,这个最后修改时间不适合我的用例。有时超过 ftp 收到的文件会滞后或先于另一个文件。内容是时间序列敏感数据,文件名发布时带有时间戳。

示例:fileName1_2018-12-14_12-34-33.csv系统时间03:30:23 fileName2_2018-12-14-12-35-22.csv系统时间03:30:03

显然应该首先使用 fileName1,但是系统修改时间的一些方式表明首先使用 fileName2。以正确顺序创建的文件,然而,写入系统的顺序是乱序的。发生了一些疯狂?但底线是我需要在 fileName2 之前使用 fileName1。所以,我不能使用 sortBy=file:modified。

我正在考虑使用类似可能只是按字典顺序排序的东西。我正在查看 sortBy=date:file:yyyyMMdd;file:name 但无法确定日期模式是针对系统时间还是我可以将其用作文件模式?

我希望这是有道理的。

长话短说,sortBy 中使用的日期模式是文件名中的模式还是修改时间或系统时间?否则我想我可以简单地对词法进行排序。谢谢!!!

        final String fromStr = String.format("%s://%s@%s:%s/%s?password=RAW(%s)&recursive=%s&stepwise=%s&useList=%s&passiveMode=%s&disconnect=%s"
                + "&move=.processed"
                + "&maxMessagesPerPoll=100"
                + "&eagerMaxMessagesPerPoll=false"
                + "&sortBy=file:modified"
                //+ "&passiveMode=true"
                + "&sendEmptyMessageWhenIdle=false"
                //+ "&stepwise=false"
                + "&delay=10000"
                + "&initialDelay=5000"
                + "&connectTimeout=10000"
                , transport, username, host, port, path, password, recursive, stepwise, useList, passiveMode, disconnect);

排序依据file:modified是文件的时间戳。对于 FTP 文件,时间戳甚至不如普通文件精确,因为它依赖于 FTP 服务器列表操作,通常只有 returns 时间,仅以小时和分钟为单位。

在您的用例中,文件名本身包含时间戳,因此您应该按文件名排序,而不是修改文件。