首页 > 解决方案 > 示例中提供的文件入站适配器示例不起作用

问题描述

@SpringBootApplication
public class FileReadingJavaApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder(FileReadingJavaApplication.class)
            .web(false)
            .run(args);
    }

    @Bean
    public IntegrationFlow fileReadingFlow() {
         return IntegrationFlows
                  .from(s -> s.file(new File(INBOUND_PATH))
                              .patternFilter("*.txt"),
                          e -> e.poller(Pollers.fixedDelay(1000)))
                  .transform(Files.toStringTransformer())
                  .channel("processFileChannel")
                  .get();
        }

}

在 Eclipse 中读取以下错误:此行有多个标记 - 此表达式的目标类型必须是功能接口 - 类型 IntegrationFlows 中的方法 from(String, boolean) 不适用于参数 (( s) -> {} , (e) -> {})

标签: spring-integrationspring-integration-dsl

解决方案


听起来您已经在使用 Spring Integration 5.x。通道适配器没有那个工厂来避免循环依赖。您需要使用Files.inboundAdaper()而不是第一个 lambda。

请参阅迁移指南:https ://github.com/spring-projects/spring-integration/wiki/Spring-Integration-4.3-to-5.0-Migration-Guide

另外,请在 GitHub 上提出问题以修复文档中的该示例:https ://docs.spring.io/spring-integration/docs/5.1.3.BUILD-SNAPSHOT/reference/html/files.html#_configuring_with_the_java_dsl_8

查看测试用例中的示例配置:https ://github.com/spring-projects/spring-integration/blob/master/spring-integration-file/src/test/java/org/springframework/integration/file/dsl /FileTests.java

另外,您可以在示例中找到其中一些:https ://github.com/spring-projects/spring-integration-samples


推荐阅读