gpt4 book ai didi

java - Apache Camel 无法在 xxx 毫秒内获取锁。将跳过该文件

转载 作者:行者123 更新时间:2023-12-02 03:45:33 25 4
gpt4 key购买 nike

我最近开始使用 Camel 将一些文件 ftp 到远程服务器。需要传输的数据量相当大(~5 GB)。为了快速传递这些数据,我设置了 Camel 来使用几个线程。我的配置类如下所示:

@Component
public class FTPCamelRoute extends SpringRouteBuilder {

@Value("${camel.zip.input}")
private String inputDirectory;

public void configure() {
from(inputDirectory + "?recursive=true&readLock=changed&readLockTimeout=3000&readLockCheckInterval=500&readLockMinAge=30s")
.onException(Exception.class).maximumRedeliveries(3).retryAttemptedLogLevel(LoggingLevel.WARN).continued(true).end()
.threads(10)
.log("Uploading file ${file:name}")
.to("{{camel.zip.output}}")
.log("Uploaded file ${file:name} complete.");
}
}

camel zip 输入和输出文件夹的定义如下:

camel.zip.input=file\\:/Temp/
camel.zip.output=ftp://host:21?username=xxx&password=yyy&binary=true

运行我的代码时,所有文件都会被传输。但是,我不断地在多个文件上遇到 readLock 超时(我想说大约 10% 的需要处理的文件会抛出此超时)。我假设某些线程尝试锁定已由另一个线程处理的文件,因此该文件上的 readLock 超时。然而,这对于线程应用程序来说似乎不太合适。有办法解决这个问题吗?

提前致谢

最佳答案

您不必自己生成线程。除非另有说明,否则 Camel 将会读取您的源目录中的所有文件,并在单独的线程中处理每个文件。您的读锁定可能是由于部分或全部其他线程试图访问已被第一个线程锁定的文件。

关于java - Apache Camel 无法在 xxx 毫秒内获取锁。将跳过该文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42277116/

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