首页 > 解决方案 > Camel 文件组件 - sortBy 选项不起作用

问题描述

我们使用的是 Camel 2.22.0,由于我们有一些限制,我们需要按名称轮询文件。每个文件都必须按名称顺序处理。我们在一个名为“FOO_BAR_SEQ_NUM_0001_0200_horadate.zip”的目录中有 200 个文件(可能超过 600 个),

'FOO_BAR_SEQ_NUM_0002_0200_horadate.zip',[...],

'FOO_BAR_SEQ_NUM_0200_0200_horadate.zip'

文件在前一天由我们的客户放在这个文件夹中,没有任何检查(机器人通过 ftp 将文件放在我们的文件夹中)

我们发现,当文件以良好的顺序保存时,修改日期是按时间顺序排列的,它工作正常。但在另一种情况下,Camel 按日期自行排序,它对我们不起作用。

我们的CustomGenericFileFilterProcessor(实现GenericFileFilter)检查文件是否是好文件,通过将其与文件的文件夹列表进行比较,如果不是,则返回false,并且将轮询并检查下一个文件。

我们在 URI 中尝试了不同的选项,例如 preSort=true、sortBy=file:name、eaggerMessagePerPoll=false,但都没有奏效。

这是我们当前的 URI:

file:////nas/folder/CODE_NAME/TOMCAT-BASE?delete=true&eagerMaxMessagesPerPoll=false&filter=%23fileStrategy&flatten=true&moveFailed=%2Fnas%2Ffolder%2FCODE_NAME%2FKO&readLock=rename&recursive=true&sortBy=file%3Aname

目前,我们在文件夹中有这些文件

'FOO_BAR_SEQ_NUM_0019_0200_horadate.zip',

'FOO_BAR_SEQ_NUM_0020_0200_horadate.zip',

'FOO_BAR_SEQ_NUM_0021_0200_horadate.zip',[...],

'FOO_BAR_SEQ_NUM_0200_0200_horadate.zip'

但是 Camel 总是返回“FOO_BAR_SEQ_NUM_0090_0200_horadate.zip”作为第一个(按日期),我们需要循环并跳过,直到 Camel 找到“FOO_BAR_SEQ_NUM_0019_0200_horadate.zip”。

我们不明白为什么 'sortBy=fine:name' 在我们的案例中不起作用。

提前致谢。问候

标签: fileapache-camel

解决方案


推荐阅读