2017-01-18 43 views
1

我的應用程序是Spring Boot應用程序。我有一個名爲abc的目錄。我創建了一個入站適配器來讀取新文件的目錄。我們假設目錄中存在一個文件aa.txt。它正在被適配器拾取。現在,讓我們再說一次同名的新文件已保存在目錄中。但是,現在適配器不會被調用。file:inbound-channel-adapter prevent-duplicates =「false」在彈簧啓動應用程序中不起作用

<file:inbound-channel-adapter id="inAdapter" 
    directory="file:abc" filter="txtFiles" 
    auto-startup="true" prevent-duplicates="false"> 
    <int:poller id="poller" fixed-delay="5000" /> 
</file:inbound-channel-adapter> 

我已經設置了prevent-duplicates=false。儘管如此,該文件沒有得到迴應。爲什麼會發生?解決辦法是什麼?

+0

是否是另一個文件,例如'aa.txt'被調用後調用'ab.txt'? – Patrick

+0

如果有另一個文件「ab.txt」出現,它會被調用。 –

+0

您可以打開Spring集成的調試日誌記錄 - 這可能會讓您知道發生了什麼。 –

回答

0

默認AcceptOnceFileListFilter不看上次更改文件屬性,只需將文件名。

FileSystemPersistentAcceptOnceFileListFilter時間戳進行比較,以便將經過修改的文件具有相同的名稱。

the documentation

AcceptOnceFileListFilter將其狀態存儲在內存中。如果希望狀態在系統重新啓動後仍然存在,請考慮使用FileSystemPersistentAcceptOnceFileListFilter。此過濾器將接受的文件名存儲在MetadataStore實現中(第9.5節「元數據存儲」)。此過濾器匹配文件名和修改時間。

+0

你能分享一些信息或鏈接,顯示如何使用FileSystemPersistentAcceptOnceFileListFilter? –

1

我得到了解決。我已經將filter-duplicates = false設置爲過濾器bean(FileListFilterFactoryBean),而不是其工作的入站通道適配器&。

+0

最後一個真正的解決方案,謝謝!現在工作! – BAER

相關問題