2
我已經定義了一個ftp:入站通道適配器,它將被作業和自定義過濾器觸發,該過濾器檢查文件名是否匹配模式,它以前沒有處理特定的工作。將作業參數傳遞到彈簧集成過濾器ftp:入站通道適配器
所以這需要作業名稱可供FTP過濾器使用。有沒有辦法將其傳遞給過濾器?還有一種方法可以將jobname作爲頭添加到由ftp適配器發出的消息中?
<int-ftp:inbound-channel-adapter
local-directory="${data.dir}" session-factory="ftpClientFactory"
channel="ftpOutputChannel" remote-directory="${ftp.data.directory}"
filter="ftpFilter">
<int:poller fixed-rate="50000" />
<!--This will be replaced by a trigger job -->
</int-ftp:inbound-channel-adapter>
<beans:bean class="com.example.ftp.FtpFilter"
id="ftpFilter"></beans:bean>
com.example.ftp.FtpFilter
public class FtpFilter implements FileListFilter<FTPFile> {
public List<FTPFile> filterFiles(FTPFile[] files) {
String validRegex = FileFilterStrategy.getValidTarGzRegex();
for (FTPFile file : files) {
String name = file.getName();
if(name.matches(validRegex) && !isProcessed(jobName, name)){
retval.add(file);
}
}
return retval ;
}
}
但是過濾器在不同的作業之間共享,所以設置屬性不是一個選項。順便說一句ls/mget如何給予更多的控制......我們可以列出一個目錄並決定使用過濾器獲得哪些文件,就像問題一樣?雖然會看到出站網關並恢復。 – 2014-09-05 19:01:59
是的,你是絕對正確的,最終使用出站網關和ThreadLocal訪問ftpFilter中的作業屬性。 – 2014-09-17 12:58:23
@加里,多虧了關注,如何替換現有的文件? – 2015-04-21 09:55:47