1

我正在寻找 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配置:

<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>
4

1 回答 1

0

AWS S3 没有这样的监视器。这是基于 HTTP 的远程协议,与基于WatchService. 你不要把苹果和苹果比较。

您需要使用标准<int-aws:s3-inbound-channel-adapter>. 默认情况下使用一个S3PersistentAcceptOnceFileListFilter对远程文件的修改作出反应。好吧,本质上它会轮询远程文件并检查其lastmodified.

在参考手册中查看更多信息:

此外,如果您将过滤器配置为使用 a FtpPersistentAcceptOnceFileListFilter,并且远程文件时间戳发生变化(导致它被重新获取)

相同的规则适用于 AWS S3 通道适配器。

于 2018-09-06T13:22:10.770 回答