Spring集成Java DSL:创建sftp入站适配器



我想使用DSL创建一个流。流来自适配器,消息将流向通道。

@Bean
    public IntegrationFlow sftpInboundFlow() {
        prepareSftpServer();
        return IntegrationFlows
                .from(Sftp.inboundAdapter(this.sftpSessionFactory).getId("SftpInboundAdapter")
                                .preserveTimestamp(true)
                                .remoteDirectory("sftpSource")
                                .regexFilter(".*\.txt$")
                                .localFilenameExpression("#this.toUpperCase() + '.a'").localDirectory(file).channel(MessageChannels.queue("sftpInboundResultChannel"))
                                .get());
    }

不确定getId()方法的编译错误。试图将Java 8的lambda转换为Java 7

我认为您想为您的组件添加一个id属性,以便在应用程序上下文中使用该bean名称注册它。你的配置必须看起来像:

return IntegrationFlows
                .from(Sftp.inboundAdapter(this.sftpSessionFactory)
                                .preserveTimestamp(true)
                                .remoteDirectory("sftpSource")
                                .regexFilter(".*\.txt$")
                                .localFilenameExpression("#this.toUpperCase() + '.a'")
                                .localDirectory(file),
                        new Consumer<SourcePollingChannelAdapterSpec>() {
                            @Override
                            public void accept(SourcePollingChannelAdapterSpec e) {
                                e.id("SftpInboundAdapter");
                            }
                        })
                .channel(MessageChannels.queue("sftpInboundResultChannel"))
                .get();

没有这样的getId(String)方法。

是的,我最终会修复它的JavaDocs,但你面临的是真正的编译错误,因此错误的语言使用。

最新更新