In questo articolo riporto un esempio di utilizzo di FTP Component di Apache Camel per l’accesso remoto a file system basato su protocollo FTP/SFTP/FTPS. La componente FTP è un’estensione di File Component e permette di inviare e ricevere file su un server FTP secondo il modello producer/consumer per lo scambio di messaggi tra sistemi eterogenei.

Stack
Apache Camel FTP 2.17.3
JDK 1.8
Maven 3.2
Il codice sorgente utilizzato in questo articolo si trova nella directory camel-ftp-consumer
Dipendenza FTP Component in pom.xml
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-ftp</artifactId> <version>2.17.3</version> </dependency>
ConsumerRouteBuilder.java
public class ConsumerRouteBuilder extends RouteBuilder {
final static String FTP_HOST = rb.getString("consumer.ftp.host");
final static String FTP_PORT = rb.getString("consumer.ftp.port");
final static String FTP_USER = rb.getString("consumer.ftp.user");
final static String FTP_PASSWORD = rb.getString("consumer.ftp.password");
final static String FTP_PROTOCOL = rb.getString("consumer.ftp.protocol");
final static String FTP_DIR = rb.getString("consumer.ftp.directoryName");
final static String FTP_OPTIONS = rb.getString("consumer.ftp.options");
public void configure() throws Exception {
from(ftpUri+"&"+FTP_OPTIONS).to("file://"+DEST_FOLDER).log(LoggingLevel.INFO, "Processing ${id}");
System.out.println("Camel FTP route initialized. Ready to receive Invoices from: " + ftpUri);
}
}
CamelExecutor.java
public class CamelExecutor {
private CamelContext camelCtx;
public void init() throws Exception {
camelCtx = new DefaultCamelContext();
try {
camelCtx.addRoutes(new ConsumerRouteBuilder());
camelCtx.start();
// Simulating a runtime environment of 30 seconds
Thread.sleep(30000);
}catch (Exception e) {
System.out.println("Unable to initialize CamelContext: " + e);
return;
}
}
}
Run test
$ mvn test

Italiano
Inglese
