0
我想通過sftp從兩個單獨的目錄將文件加載到一個本地文件夾中。所以,我有兩個入站通道適配器這樣的:Sftp入站通道適配器:重複消息
<bean id="lastModifiedFileFilter" class="com.test.sftp.SftpLastModifiedFileListFilter">
<constructor-arg name="age" value="100"/>
</bean>
<int:poller id="fixedRatePoller" fixed-rate="100"
time-unit="SECONDS"/>
<int-sftp:inbound-channel-adapter id="inbound1"
session-factory="sftpSessionFactory"
auto-create-local-directory="true"
delete-remote-files="true"
remote-directory="/remote-folder1"
filter="lastModifiedFileFilter"
local-directory="/local-folder"
channel="nullChannel">
<int:poller ref="fixedRatePoller"/>
</int-sftp:inbound-channel-adapter>
<int-sftp:inbound-channel-adapter id="inbound2"
session-factory="sftpSessionFactory"
auto-create-local-directory="true"
delete-remote-files="true"
remote-directory="/remote-folder2"
filter="lastModifiedFileFilter"
local-directory="/local-folder"
channel="nullChannel">
<int:poller ref="fixedRatePoller"/>
</int-sftp:inbound-channel-adapter>
再舉例來說,如果一個名爲「test.csv」成爲「遠程文件夾1」我在日誌中以下消息新的文件:
INFO Created message: [GenericMessage [payload=local-folder/test.csv, headers={id=bb76252a-e826-579d-b0e1-cab55a7cc957, timestamp=1508242673896}]] [task-scheduler-6][FileReadingMessageSource]
INFO Created message: [GenericMessage [payload=local-folder/test.csv, headers={id=a76de653-f805-8add-1e02-924d0915a18c, timestamp=1508242673962}]] [task-scheduler-2][FileReadingMessageSource]
它看起來很奇怪,我不知道爲什麼每個文件有兩條消息。也許我配錯了嗎?有人可以解釋這種行爲?
感謝您的解釋! 我一般想要的是通過sftp將文件遞歸複製(包括子目錄)從遠程服務器到本地目錄。只需複製,無需進一步處理。 有沒有任何解決方案來做到這一點與春季整合?我在文檔中沒有發現任何內容。你能勸我嗎? –
真的嗎? 'MGET'如何:https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/sftp.html#sftp-outbound-gateway? –