aws s3 Spring Монитор модификации файлов интеграции
Я ищу образец монитора модификации файла AWS s3 Spring.
Требование: каждый раз, когда файл изменяется из корзины AWS S3, последние изменения должны быть перенесены из экземпляра s3 в EC2.
У нас есть событие наблюдения за адаптером входящего файла, но я ищу аналогичный адаптер или логику для операции s3.
Что мы имеем сейчас:
<int-file:inbound-channel-adapter id="modifiedFiles" directory="${input.directory}" use-watch-service="true" filter="acceptAllFilter" watch-events="MODIFY"/>
XML Config:
<bean id="acceptOnceFilter"
class="org.springframework.integration.file.filters.AcceptOnceFileListFilter" />
<integration:channel id="s3FilesChannel" />
<int-aws:s3-inbound-channel-adapter id="s3FilesChannelId" channel="s3FilesChannel"
session-factory="s3SessionFactory"
auto-create-local-directory="false"
delete-remote-files="false"
preserve-timestamp="true"
local-directory="file:${localFilePath}"
local-filter="acceptOnceFilter"
remote-directory-expression="${bucket_name}"
auto-startup="false"
filename-regex="${regx_expresion}"
remote-file-separator="/" >
<integration:poller fixed-delay="1000"/>
</int-aws:s3-inbound-channel-adapter>
<integration:channel id="s3FilesChannel">
<integration:queue/>
</integration:channel>
1 ответ
Для AWS S3 такого монитора нет. Это удаленный протокол по HTTP в отличие от простого монитора файловой системы, основанного на WatchService
, Вы не сравниваете яблоки с яблоками.
Вам нужно использовать стандарт <int-aws:s3-inbound-channel-adapter>
, Есть S3PersistentAcceptOnceFileListFilter
используется по умолчанию, который реагирует на изменение удаленных файлов. Ну, по сути, он опрашивает удаленный файл и проверяет его lastmodified
,
Более подробная информация в Справочном руководстве:
Кроме того, если вы настроите фильтр для использования
FtpPersistentAcceptOnceFileListFilter
и отметка времени удаленного файла изменяется (вызывая его повторную выборку)
Те же правила применяются к канальным адаптерам AWS S3.