文件传输时,Camel有时会部分丢失数据

时间:2017-11-18 09:21:23

标签: java apache-camel dsl spring-camel

我有以下代码:

//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() 在我的本地mashine它总是很好,但在测试环境中我们的QA注意到有趣的行为:有时文件会丢失一些数据。例如输入文件 - 20 MB但是在分析了大小小于20MB的应用程序放置文件之后。例如,它可以是6 MB。而且如果重复此操作,相同的文件大小将会改变。它可以变成8 MB等等。因此行为是不可预测的。

我认为资源处理有问题,但我没有想法可能出错。

有什么想法吗?

0 个答案:

没有答案