我有以下代码:
//sftp
from(String.format("sftp://%s@%s:%d/%s?password=%s&delete=true",
sftpConfiguration.getUsername(),
sftpConfiguration.getHost(),
sftpConfiguration.getPort(),
sftpConfiguration.getSourcePath(),
sftpConfiguration.getPassword()))
.process(new Processor() {
@Override
public void process(Exchange exchange) {
try {
isCsv = CSV.equals(new
Tika().detect(exchange.getIn().getBody(InputStream.class), fileName));
} catch (IOException e) {
....
return;
}
final List<Map<String, Object>> parsedLines = misCsvParser.parse(exchange.getIn().getBody(InputStream.class), fileName);
...
}
}).to("seda:parsed_csv");
from("seda:parsed_csv")
.to(String.format("sftp://%s@%s:%d/%s?password=%s",
sftpConfiguration.getUsername(),
sftpConfiguration.getHost(),
sftpConfiguration.getPort(),
sftpConfiguration.getDestPathRejected(),
sftpConfiguration.getPassword()));
简而言之,这段代码从中获取文件sftpConfiguration.getSourcePath()
,对其进行分析,然后将其发送到sftpConfiguration.getDestPathRejected()
在我的本地机器上,它始终运行良好,但在测试环境中,我们的 QA 注意到了有趣的行为:有时文件会丢失一些数据。例如输入文件 - 20 MB,但在分析应用程序后放置文件的大小小于 20MB。例如,它可以是 6 MB。此外,如果对相同的文件大小重复此操作会发生变化。它可以变成 8 MB 等等。因此行为是不可预测的。
我认为资源处理有问题,但我不知道有什么问题。
有任何想法吗?