多次使用 Camel ConsumerTemplate 下载文件
Download the file using Camel ConsumerTemplate multiple times
我正在尝试使用 Camel ConsumerTemplate 多次下载同一个文件。它没有被多次下载,但我在使用 camel route 时完成了它。
我想 多次使用 ConsumerTemplate 下载文件。
这是我尝试使用 ConsumerTemplate 的代码:
import org.apache.camel.CamelContext;
import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class DynamicConsumer implements Processor {
@Override
public void process(Exchange inExchange) throws Exception {
CamelContext camelContext = inExchange.getContext();
ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
String resource = "sftp://tester@localhost:22/myfiles?password=password&noop=true&idempotent=false&readLockMarkerFile=false&readLock=none&filter=#myFileFilter";
consumerTemplate.start();
Exchange resourceExchange = consumerTemplate.receive(resource,20000);
consumerTemplate.stop();
if(resourceExchange != null) {
inExchange.getOut().setBody(resourceExchange.getIn().getBody());
inExchange.getProperties().putAll(resourceExchange.getProperties());
inExchange.getOut().getHeaders().putAll(resourceExchange.getIn().getHeaders());
} else {
inExchange.getOut().setBody(null);
}
}
}
这个动态消费者被骆驼路线多次调用。所以,每次,我都希望下载给定位置的文件。但这并没有发生。
这是我用骆驼路线试过的代码。
<from uri="sftp://tester@localhost:22/myfiles?password=password&noop=true&idempotent=false&readLockMarkerFile=false&readLock=none&filter=#myFileFilter"/>
如文档所述,您应该调用 ConsumerTemplate 的 –doneUoW(Exchange)
函数:
If you have used any of the receive methods which returns a Exchange
type then you need to invoke this method when you are done using the
returned Exchange.
尝试在consumerTemplate.stop()
之前添加以下内容:
consumerTemplate.doneUoW(resourceExchange);
我正在尝试使用 Camel ConsumerTemplate 多次下载同一个文件。它没有被多次下载,但我在使用 camel route 时完成了它。
我想 多次使用 ConsumerTemplate 下载文件。
这是我尝试使用 ConsumerTemplate 的代码:
import org.apache.camel.CamelContext;
import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class DynamicConsumer implements Processor {
@Override
public void process(Exchange inExchange) throws Exception {
CamelContext camelContext = inExchange.getContext();
ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
String resource = "sftp://tester@localhost:22/myfiles?password=password&noop=true&idempotent=false&readLockMarkerFile=false&readLock=none&filter=#myFileFilter";
consumerTemplate.start();
Exchange resourceExchange = consumerTemplate.receive(resource,20000);
consumerTemplate.stop();
if(resourceExchange != null) {
inExchange.getOut().setBody(resourceExchange.getIn().getBody());
inExchange.getProperties().putAll(resourceExchange.getProperties());
inExchange.getOut().getHeaders().putAll(resourceExchange.getIn().getHeaders());
} else {
inExchange.getOut().setBody(null);
}
}
}
这个动态消费者被骆驼路线多次调用。所以,每次,我都希望下载给定位置的文件。但这并没有发生。
这是我用骆驼路线试过的代码。
<from uri="sftp://tester@localhost:22/myfiles?password=password&noop=true&idempotent=false&readLockMarkerFile=false&readLock=none&filter=#myFileFilter"/>
如文档所述,您应该调用 ConsumerTemplate 的 –doneUoW(Exchange)
函数:
If you have used any of the receive methods which returns a Exchange type then you need to invoke this method when you are done using the returned Exchange.
尝试在consumerTemplate.stop()
之前添加以下内容:
consumerTemplate.doneUoW(resourceExchange);