Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Camel:访问和访问Exchange_Java_Apache Camel_Integration Patterns - Fatal编程技术网

Java Camel:访问和访问Exchange

Java Camel:访问和访问Exchange,java,apache-camel,integration-patterns,Java,Apache Camel,Integration Patterns,我有这条路线 from(URI_WEBSERVICE) .convertBodyTo(Entrada.class) .process(new ProcessorTratarWS()) .pollEnrich("ftp://10.100.8.2/entradaCamel?username=USER&password=PASSWORD&delete=true&fileName=${property.archivoRespuesta}", timeOut, new Estra

我有这条路线

from(URI_WEBSERVICE)
.convertBodyTo(Entrada.class)
.process(new ProcessorTratarWS()) 
.pollEnrich("ftp://10.100.8.2/entradaCamel?username=USER&password=PASSWORD&delete=true&fileName=${property.archivoRespuesta}", timeOut, new EstrategiaConfirmacion())
.to(WS_RESPONDER)
ProcessorTratarWS()中我设置了property.archivoRespuesta的值,它是pollRich应该加载的文件名

但是,文件上说“PollRich没有访问Exchange的权限”。这意味着PollRich无法读取${property.archivoRespuesta}的值

有没有其他方法可以做我正在尝试的事情

谢谢

来自

。。。 您可以使用收件人列表并使用动态 端点,并在收件人列表上定义聚合策略 这样做就像一个富人一样

尝试以下方法:

from(URI_WEBSERVICE)
.convertBodyTo(Entrada.class)
.process(new ProcessorTratarWS()) 
.recipientList(simple("ftp://10.100.8.2/entradaCamel?username=USER&password=PASSWORD&delete=true&fileName=${property.archivoRespuesta}")).aggregationStrategy(new EstrategiaConfirmacion())
.to(WS_RESPONDER)
编辑:

以上代码是将文件保存在FTP服务器中。 如果要从FTP服务器轮询文件,可以尝试

        from(URI_WEBSERVICE)
            .convertBodyTo(Entrada.class)
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    // logic of ProcessorTratarWS goes here
                    ConsumerTemplate consumer=exchange.getContext().createConsumerTemplate();
                    String filename=exchange.getProperty("archivoRespuesta",String.class);                  
                    Object file=consumer.receiveBody("ftp://10.100.8.2/entradaCamel?username=USER&password=PASSWORD&delete=true&fileName="+filename,timeOut);
                    // logic of EstrategiaConfirmacion goes here
            }

        })
        .to(WS_RESPONDER);  

免责声明:我没有使用太多,可能会有更优雅/高效的解决方案

Argh!太令人困惑了!如何告诉recipentList我要检索文件而不是编写文件?最后我理解了您的问题:)。请查看我的最新答案谢谢!它起作用了!这就是如何使用ConsumerTemplate。如果你去智利,打电话给我。。。我欠你一杯啤酒。。。