Camel实现FTP下载

filter过滤掉30天之前的数据
可以通过文件名过滤的最好通过exclude和include正则表达式过滤,否则camel还会轮询到,第二次filter才过滤掉。

&exclude=^\\S{0,}(副本|~|del|201[0-8]{1})\\S{0,}$&include=^\\S{0,}预警信号\\S{0,}(doc|docx)$
				IdempotentRepository ir = FileIdempotentRepository.fileIdempotentRepository(new File("log/alarm.dat"), 250, 512000);
				from(f)
						.filter(exchange -> System.currentTimeMillis()-exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED,Long.class) < 2592000000l)
						.idempotentConsumer(header(Exchange.FILE_NAME), ir)
						.to(to);
				from(f)
						.to("file:xxx?fileName=$simple{date:header.CamelFileLastModified:yyyyMMddHHmmss}-${file:name}&fileExist=Ignore&tempFileName=rain.tmp")
						.idempotentConsumer(simple("$simple{header.CamelFileName}-$simple{header.CamelFileLastModified}"), ir)
ftp://xxx:xxx@xxx/ShanDong/"+day+"/Fire_Result?binary=true&noop=true&recursive=true&passiveMode=true&useFixedDelay=true&delay=60000&idempotent=true

dempotent:true,表示对处理后的文件将不会再次传输,默认false
&include=.*conf#只处理后缀名是conf的文件,正则表达式在include中,应该在星号之前有点
binary=true二进制传输
noop=true处理后不移动文件
recursive=true递归处理目录
passiveMode=true被动模式
useFixedDelay=true&delay=60000目录轮询1分钟
&ftpClient.controlEncoding=UTF-8设置编码

camel.springboot.main-run-controller=true #springboot让java进程在后台运行
java程序中启用camel日志
log4j.properties

log4j.rootLogger=INFO, out

log4j.logger.org.apache.camel=DEBUG

log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n

你可能感兴趣的:(ftp,Camel)