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

时间:2018-12-14 17:25:02

标签: apache-camel camel-ftp

我需要通过另一种方式对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,但无法确定日期格式是否适用于系统时间,或者我可以将其用作文件格式?

我希望这是有道理的。

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

        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);

1 个答案:

答案 0 :(得分:1)

按文件排序:已修改是文件的时间戳。对于FTP文件,时间戳甚至不如普通文件精确,因为它取决于FTP服务器列表操作,该操作通常仅返回小时和分钟。

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