0

成功传输到目标目录后,源文件不会从 s3 存储桶中删除一次。步骤 1. 使用入站流通道适配器将源文件从 S3 流式传输到本地目录。(工作正常)第 2 步:想要删除源文件一旦成功传输(不工作)配置代码如下

                        <int-aws:s3-inbound-streaming-channel-adapter id="s3FilesInbound"
                                        channel="s3FilesChannel" 
                                        session-factory="s3SessionFactory" 
                                        filename-regex="^.*\\.(txt|csv)$" 
                                        remote-directory-expression="bucket_name" 
                                        auto-startup="true" >

                                <integration:poller id="s3FilesChannelPoller"
                                                    fixed-delay="1000"
                                                    max-messages-per-poll="1">
                                </integration:poller>
                            </int-aws:s3-inbound-streaming-channel-adapter>


                    <integration:stream-transformer id="streamTransformer" input-channel="s3FilesChannel" output-channel="s3FilesChannelOut"/>

        <integration:chain id="filesS3ChannelChain"
                input-channel="s3FilesChannelOut">
                <file:outbound-gateway
                    id="fileInS3ArchiveChannel"
                    directory="local_directory"
                    filename-generator-expression="headers.file_remoteFile">
                    <file:request-handler-advice-chain>
                        <ref bean="retryAdvice" />
                    </file:request-handler-advice-chain>
                </file:outbound-gateway>
                <integration:gateway request-channel="nullChannel"
                        error-channel="errorChannel" />
            </integration:chain>

问候,

4

1 回答 1

0

既然你在那里使用 a <integration:stream-transformer>,我认为没有理由依赖<int-aws:s3-inbound-streaming-channel-adapter>. 使用第一个,您只需消除最后一个的流式传输目的。

我建议你看看<int-aws:s3-inbound-channel-adapter>已经有一个delete-remote-files="true"选项的常规。

另一方面,你仍然可以用你目前拥有的东西来做到这一点,但你需要像<integration:outbound-channel-adapter expression="@s3SessionFactory.getSession().remove(headers[file_remoteDirectory] + '/' + headers[file_remoteFile])">.

这些标题由AbstractRemoteFileStreamingMessageSource.

于 2018-11-07T14:44:40.803 回答