He primavera siguiente configuraciónApache Camel ftp consumidor carga los mismos archivos una y otra vez
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="downloadLogger" class="com.thomsonreuters.oa.sdi.camel.DownloadLogger" />
<bean id="fileFilter" class="com.thomsonreuters.oa.sdi.camel.IgnoreReadyFilesFilter" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="ftp://url_to_ftp?password=*******&noop=true&stepwise=false&binary=true&consumer.delay=10s&recursive=true&filter=#fileFilter" />
<process ref="downloadLogger" />
<to uri="file:data/outbox" />
</route>
</camelContext>
</beans>
En el lado ftp tengo 3 carpetas con archivos que quiero descargar. Quiero lograr siguiente escenario:
- El FTP es una cantidad fija de archivos (por isntance 5) en el primer consumidor tirón carga datos de estos archivos a la carpeta de destino
- En el segundo intento de cargar archivos, ftp estado sigue siendo el mismo (5 archivos) y ftp camello consumidor simplemente no hace nada (excepto cheque para los nuevos archivos)
- a FTP llega un nuevo 2 archivos, y en este tirón descarga datos de consumo sólo estas nuevas dos archivos
Por el momento, mis soluciones actuales descarga todos los archivos cada vez que un proceso de carga de datos, cómo puedo administrar información sobre archivos descargados para evitar descargas de duplicados (me refiero a archivos ya copiados de ftp), puedo escribir mi propio filtro que filtrará los archivos ya descargados, pero creo que debería haber una característica incorporada que me dará control de esto (tal vez idempotentRepository, en realidad no estoy seguro) ...
¿Qué versión de camello está usando? ¿Y los 5 archivos están en la misma carpeta o en diferentes subcarpetas? –
La versión Camel es 2.7.0. Hay 1 directorio raíz con 3 subcarpetas, cada subcarpeta puede contener una cantidad diferente de archivos. Para ser más específico, consideremos que una subcarpeta contiene inicialmente 5 archivos y luego a esta carpeta llegan 2 archivos más.Y quiero evitar la descarga de archivos que ya están en la carpeta de destino. – endryha
Hmm noop = true implicaría idempotent también. Pero intento habilitarlo usando idempotent = true en el uri –