Hi,
I was working with something similar to this problem. But I am not able to
capture the exceptions properly.
Setps:
1. Download the existing file from the FTP
2. Push the file to backup folder and append the file name with current date
3. Push a new file to the FTP which has a complete new file
Here is gist of what I am trying to achieve
in RouteBuilder:
public void configure() throws Exception {
onException(Exception.class)
.log("Exception returned due: ${exception.message}")
.to(INTERNAL_ERROR_HANDLER_ENDPOINT_URI)
.to(logError(PACKAGE_NAME))
.handled(true);
from(INTERNAL_ERROR_HANDLER_ENDPOINT_URI)
.log("File error route triggered due to :
${exception?.class}")
.transform().simple("Error ${exception.message}")
.bean(responseTranslator, "translateError")
.end();
from(ENDPOINT_URI)
.to(log(PACKAGE_NAME))
.process(contentBackupProcessor)
.to(INTERNAL_ENDPOINT_URI)
.end();
from(INTERNAL_ENDPOINT_URI)
.process(requestProcessor)
.to(ftpHostConfiguration.ftpEndpointForPublishing())
.bean(responseTranslator, "translate")
.to(log(PACKAGE_NAME));
}
ContentBackupProcessor:
logger.debug("File backup processor called.");
CamelContext context = exchange.getContext();
Endpoint ftp =
context.getEndpoint(ftpHostConfiguration.ftpConsumerEndpointForBackupProcessor());
PollingConsumer consumer = ftp.createPollingConsumer();
logger.debug("FTP Consumer created for backup");
Endpoint producerFtp =
context.getEndpoint(ftpHostConfiguration.ftpProducerEndpointForBackupProcessor());
ProducerTemplate template =
exchange.getContext().createProducerTemplate();
logger.debug("FTP Producer created for backup");
consumer.start();
while(true){
Exchange result = consumer.receive(5000);
if(result == null){
break;
}
template.send(producerFtp, result);
}
consumer.stop();
}
And this is how my FTP URL Looks like
URL 1: Consumer URL for downloading the file
ftp://XXXXC@localhost:8899/?password=XXXXC&consumer.bridgeErrorHandler=true&throwExceptionOnConnectFailed=true&maximumReconnectAttempts=0&useList=true&delete=true
URL 2: Producer URL for moving to backup folder and adding current date to
the fileName
ftp://XXXXC@localhost:8899/backup?password=XXXXC&consumer.bridgeErrorHandler=true&throwExceptionOnConnectFailed=true&maximumReconnectAttempts=0&useList=true&fileName=${file:name.noext}_${date:now:yyyyMMdd.hhmmss}.js
ftp://XXXX@localhost:8899/?password=XXXX&consumer.bridgeErrorHandler=true&throwExceptionOnConnectFailed=true&maximumReconnectAttempts=0
Since URL 1 and URL 2 is written inside the processor when exception happens
like unable to connect to FTP, onException is not able to handle that
properly. And the route ends with a lot of stack trace.
Kindly help. This is a bit urgent since we have a service that needs to be
delivered urgently.
Thanks & Regards
Dilip H Pashupathi
--
View this message in context:
http://camel.465427.n5.nabble.com/Using-ConsumerTemplate-to-fetch-files-tp3304671p5796783.html
Sent from the Camel - Users mailing list archive at Nabble.com.