我有以下骆驼路线
from("file://target/input/?delete=true")
.log("Started processing [${header.CamelFileNameOnly}] ...")
.split(body().tokenize("\n")).streaming()
.log("ELEMENT ${body}")
.process(this::doStuffWithElement);
我想以某种方式知道何时到达文件中的最后一行,然后进行进一步处理。我尝试过拨打
end()
但在这种情况下它无法按我想要的方式工作。
我想找到一个可以应用于各种来源的解决方案,例如。传入的 HTTP 请求、从 S3 或 SFTP 下载的文件 - 仅举几例。
这个想法是实现一个流式处理解决方案,它不会增加内存消耗,但它知道何时正确到达流的末尾。
分割模式存储交换属性分割元素的状态,因此您可以有一个布尔值是否是最后一个。请参阅文档:https://camel.apache.org/components/4.4.x/eips/split-eip.html#_exchange_properties