我在“流”模式下使用Camels重定序器以确保以正确的顺序处理文件
.resequence(new MySequencingExpression()).stream().timeout(60000))
超时必须是分钟的数量级,因为我们偶尔会得到完全无序的文件
当我运行它时,我注意到第一个文件的处理将延迟超时时间 - 这对我们来说是完全不可接受的。
检查代码后发生了初始延迟,因为代码实际上是在尝试将第一个文件与其不存在的前任文件进行比较然后超时。它应该做的是像'我在上一个超时期间有一个文件,如果是这样,它是正确的前任吗?'
有没有解决方法呢?
由于
理查德
答案 0 :(得分:1)
这不是错误,请参阅ResequencerEngine documentation
如果最后传递的元素为空,即重新排序器是新的 创建了第一个到达元素需要超时毫秒 成为准备交付的案例。
关于你的评论:
给出序列1,2,3,4并且给出1和2到达 - at 这一点代码可以开始处理
如果1和2之后是0,那该怎么办?
我认为如果开发人员允许用户设置第一个预期值会很好,因为通常我们知道它是什么,它会在重定序器启动时节省不必要的延迟,但我认为它目前不可能。