0

我有以下代码:

//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 等等。因此行为是不可预测的。

我认为资源处理有问题,但我不知道有什么问题。

有任何想法吗?

4

0 回答 0