Адаптер входящего канала 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" становится в "remote-folder1", в журнале появляются следующие сообщения:
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]
Это выглядит странно, и я не знаю, почему у меня есть два сообщения в одном файле. Может у меня неправильная конфигурация? Кто-то может объяснить это поведение?
1 ответ
Правильно, вы здесь запутались, потому что у вас есть два адаптера канала опроса для одного и того же локального каталога. Итак, один из адаптеров канала загружает файл из SFTP и создает сообщение из его локальной копии. Но в то же время у нас есть второй опросный адаптер для того же локального каталога. Да, этот файл ничего не делает для удаленного каталога, но локальный файл находится здесь, и он берется еще раз.
Вы должны рассмотреть возможность использования различных локальных каталогов или использовать local-filter
не "крадите" файлы из другого канального адаптера.