Apache Camel 拆分、标记化和流式传输 - 最后一个元素

问题描述 投票:0回答:1

我有以下骆驼路线

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 下载的文件 - 仅举几例。

这个想法是实现一个流式处理解决方案,它不会增加内存消耗,但它知道何时正确到达流的末尾。

java spring apache-camel
1个回答
0
投票

分割模式存储交换属性分割元素的状态,因此您可以有一个布尔值是否是最后一个。请参阅文档:https://camel.apache.org/components/4.4.x/eips/split-eip.html#_exchange_properties

© www.soinside.com 2019 - 2024. All rights reserved.