gpt4 book ai didi

apache-camel - 在 apache camel 中处理大型压缩文件

转载 作者:行者123 更新时间:2023-12-04 05:11:46 25 4
gpt4 key购买 nike

我正在尝试从 ftp 服务器获取具有 .zip 压缩的单个文件,并尝试使用 camel 将其存储在具有 .gzip 压缩的 S3 中。以下是我目前的路线。

from("sftp://username@host/file_path/?password=<password>&noop=true&streamDownload=true")
.routeId("route_id")
.setExchangePattern(ExchangePattern.InOut)
.unmarshal().zipFile()
.marshal().gzip()
.to("aws-s3://s3_bucket_name?amazonS3Client=#client");

这适用于较小的文件。但是我有压缩后大小约为 700 MB 的文件。对于那个大小的文件,我得到 OutOfMemoryError for Java heap space
我知道 camel (.split(body().tokenize("\n")).streaming()) 中有一个流选项,但我不确定我是否可以 umarshal并在流式传输时进行编码。 (我看到一个类似的解决方案 here 但在这种情况下,源文件是纯文本/csv)。
问题的第二部分是将文件流式传输回 S3。我知道 camel-aws 中的 multiPartUpload 选项 组件,但它似乎要求源是一个文件。我不知道如何实现。

如果不在自定义处理器中使用 java 代码处理(解压缩然后 gzip 压缩)文件,是否可以实现这一点?

环境: Camel 2.19.3,Java 8

谢谢

最佳答案

我使用 streamCaching() 解决了这个问题。所以我会这样做的方式是

from('xyz')
.streamCaching()
.unmarshall().gzip()
.to('abc')
.end()

关于apache-camel - 在 apache camel 中处理大型压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48778506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com