我有一个附加到文件的Spring Integration出站通道适配器。我想在此文件中附加日期(例如myfile_ddmmyyyy),然后设置一个过程,该过程将前几天文件上传到AWS S3存储桶并删除本地文件。
是否可以使用Spring Integration和Spring AWS扩展,或者我需要使用Spring Batch /自定义流程来执行此操作。
答案 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>