假设我创建了一个这样的流:
stream create --name ftpstream --definition "ftp --username=ftpuser --password=pass123 --host=host.com --remoteDir=/home/ftpuser --mode=ref | log" --deploy
如果FTP服务器包含两个文件,则两者都将被传输,log sink将记录如下内容:
2017-10-24T20:43:08+0200 1.3.1.RELEASE INFO task-scheduler-3 sink.ftpstream - /tmp/xd/ftp/dummy.txt
2017-10-24T20:43:08+0200 1.3.1.RELEASE INFO task-scheduler-3 sink.ftpstream - /tmp/xd/ftp/test.txt
但是,此打印仅在第一次处理新文件时发生(如果我向FTP服务器添加新文件,则接收日志将记录消息)
但如果我从本地/tmp/xd/ftp
目录中删除已传输的文件,则会再次传输文件,但不会写入接收日志消息。
每次传输文件时如何正确获取文件引用?
感谢。
答案 0 :(得分:0)
您需要一个自定义FTP源 - 默认来源AcceptOnceFileListFilter
中有一个local-filter
,因此它不会两次传递相同的文件(即使它已被提取)。
如果您使用FileSystemPersistentAcceptOnceFileListFilter
,则会在lastModified
日期更改时传递该文件。