【问题标题】:Can spring-integration-aws for s3 replicate bucket subdirectories?s3 的 spring-integration-aws 可以复制存储桶子目录吗?
【发布时间】:2018-10-05 02:37:51
【问题描述】:

我使用来自 https://github.com/spring-projects/spring-integration-aws 的示例配置作为入站通道适配器,但我有一个存储桶,其中包含内部带有 CSV 的子目录。

有没有办法在本地复制桶树结构?我只设法从子目录中复制文件,但它们最终是在我使用 messageSource.setLocalDirectory(LOCAL_FOLDER); 设置的目录的根目录中创建的;

或者有没有办法识别文件来自哪个桶子目录?

@Bean
@InboundChannelAdapter(value = "s3FilesChannel", poller = @Poller(fixedDelay = "100"))
public S3InboundFileSynchronizingMessageSource s3InboundFileSynchronizingMessageSource() {
    S3InboundFileSynchronizingMessageSource messageSource =
            new S3InboundFileSynchronizingMessageSource(s3InboundFileSynchronizer());
    messageSource.setAutoCreateLocalDirectory(true);
    messageSource.setLocalDirectory(LOCAL_FOLDER);
    messageSource.setLocalFilter(new AcceptOnceFileListFilter<File>());
    return messageSource;
}

【问题讨论】:

    标签: amazon-s3 spring-integration spring-batch spring-integration-aws


    【解决方案1】:

    你需要使用

    /**
     * Switch the local {@link FileReadingMessageSource} to use a custom
     * {@link DirectoryScanner}.
     * @param scanner the {@link DirectoryScanner} to use.
     * @since 5.0
     */
    public void setScanner(DirectoryScanner scanner) {
    

    并指定RecursiveDirectoryScanner:https://docs.spring.io/spring-integration/docs/current/reference/html/ftp.html#_recovering_from_failures:

    从5.0版本开始,Inbound Channel Adapter可以根据生成的本地文件名在本地建立子目录。

    您需要从存储桶中提取,S3InboundFileSynchronizingMessageSource 将恢复本地目录中的结构。

    注意:你当然需要使用最新的spring-integration-aws-2.0.0.RELEASE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      相关资源
      最近更新 更多