使用Spring Integration每天将文件发送到Amazon S3

时间:2017-05-04 16:59:30

标签: amazon-s3 spring-integration

我有一个附加到文件的Spring Integration出站通道适配器。我想在此文件中附加日期(例如myfile_ddmmyyyy),然后设置一个过程,该过程将前几天文件上传到AWS S3存储桶并删除本地文件。

是否可以使用Spring Integration和Spring AWS扩展,或者我需要使用Spring Batch /自定义流程来执行此操作。

1 个答案:

答案 0 :(得分:0)

要写入文件甚至追加,您应该FileWritingMessageHandler使用FileExistsMode.APPEND

要在写完之后开始一些过程,你可以通过几个技巧来实现:

  • PublishSubscribeChannel当该流程类似于第二个订阅者时
  • 当您拥有该流程的第二个渠道时,
  • RecipientListSubscriber
  • ExpressionEvaluatingRequestHandlerAdvice附加到FileWritingMessageHandler并通过其successChannel选项启动流程。

要将本地文件上传到AWS S3,您应该使用S3MessageHandler作为该(第二)频道的(第二个)订阅者。注入S3ProgressListener可用于删除本地文件。虽然你仍然可以在这个问题上使用上面提到的ExpressionEvaluatingRequestHandlerAdvice

<int-aws:s3-outbound-channel-adapter s3="s3" ...>
     <int-aws:request-handler-advice-chain>
            <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
                <property name="onSuccessExpressionString" value="payload.delete()"/>
            </bean>
    </int-aws:request-handler-advice-chain>
</int-aws:s3-outbound-channel-adapter>