Apache camel Apache Camel消费者模板无法复制文件,无法复制一个文件两次

Apache camel Apache Camel消费者模板无法复制文件,无法复制一个文件两次,apache-camel,Apache Camel,嗨,我正在使用ApacheCamel 2.15.2。我有一个消费者模板,因此我可以复制具有动态文件名的文件: if (fileInfo != null) { filename = fileInfo.getFileName(); String camelUri = "file://" + fileInfo.getCopyFilePath() + "/?fileName=RAW(" + filename + ")

嗨,我正在使用ApacheCamel 2.15.2。我有一个消费者模板,因此我可以复制具有动态文件名的文件:

if (fileInfo != null) {
            filename = fileInfo.getFileName();
            String camelUri = "file://" + fileInfo.getCopyFilePath() + "/?fileName=RAW("
                    + filename + ")&noop=false&idempotent=false&readLock=changed";
            System.out.println("Camel uri: " + camelUri);
            logger.info("Camel uri: " + camelUri);

            Exchange ex = consumerTemplate.receive(camelUri);
....
如您所见,我显式地设置了noop和幂等元,以实现多次复制同一文件。但事实并非如此。它挂起receive方法,以便后续尝试复制同名文件。只有我们重新启动应用程序,它才能复制它。如有任何建议,将不胜感激。它可能与此类似,但我无法访问该解决方案。提前谢谢

当我通过Camel代码进行调试时,它似乎正在调用EventDrivenPollingConsumer的receive方法,并在调用queue.take()时挂起(第110行)。而且,即使在该变量内部,ArrayBlockingQueue中的“count”变量也为零:

while (count == 0)
                notEmpty.await();

加上这个,以防万一它能帮助任何有线索的人

好的,如果我调用“consumerTemplate.doneUoW(ex)”,它会复制多次。但是,同时它正在删除(实际上移动到.camel文件夹)源文件,我不想这样做!然后,必须设置noop=true:

if (fileInfo != null) {
        filename = fileInfo.getFileName();
        String camelUri = "file://" + fileInfo.getCopyFilePath() + "/?fileName=RAW("
                + filename + ")&noop=true&idempotent=false&readLock=none";
        System.out.println("Camel uri: " + camelUri);
        logger.info("Camel uri: " + camelUri);

        Exchange ex = consumerTemplate.receive(camelUri);
        // consumerTemplate.r
        logger.info("File received: " + fileInfo.getFileName());
        exchange.getOut().setBody(ex.getIn().getBody());

        consumerTemplate.doneUoW(ex);
    }
现在,它如预期的那样工作