Spring integration Spring集成JavaDSL桥来轮询两个不同的目录

Spring integration Spring集成JavaDSL桥来轮询两个不同的目录,spring-integration,spring-batch,spring-integration-dsl,Spring Integration,Spring Batch,Spring Integration Dsl,我有一个安装文件轮询器/通道适配器,它使用JavaDSL轮询目录和处理程序集成流。但我没有得到任何关于如何向同一处理程序添加另一个目录/通道适配器和桥接器的参考。这是我的密码 @Bean public IntegrationFlow integrationFlow(JobLaunchingGateway jobLaunchingGateway) { return IntegrationFlows.from(Files.inboundAdapter(new File(incomingDir

我有一个安装文件轮询器/通道适配器,它使用JavaDSL轮询目录和处理程序集成流。但我没有得到任何关于如何向同一处理程序添加另一个目录/通道适配器和桥接器的参考。这是我的密码

@Bean
public IntegrationFlow integrationFlow(JobLaunchingGateway jobLaunchingGateway) {
    return IntegrationFlows.from(Files.inboundAdapter(new File(incomingDir)).
                    filter(new SimplePatternFileListFilter("*.csv")).
                    filter(new AcceptOnceFileListFilter<>()),
            c -> c.poller(Pollers.fixedRate(500).maxMessagesPerPoll(1))).
            handle(fileMessageToJobRequest()).
            handle(jobLaunchingGateway).
            log(LoggingHandler.Level.WARN, "headers.id + ': ' + payload").
            get();
}
@Bean
公共集成流集成流(JobLaunchingGateway JobLaunchingGateway){
返回IntegrationFlows.from(Files.inboundAdapter(新文件(incomingDir))。
过滤器(新的SimplePatternFileListFilter(“*.csv”))。
筛选器(新的AcceptOnceFileListFilter()),
c->c.poller(Pollers.fixedRate(500.maxMessagesPerPoll(1)))。
句柄(fileMessageToJobRequest())。
句柄(jobLaunchingGateway)。
日志(LoggingHandler.Level.WARN,“headers.id+”:“+负载”)。
get();
}

Spring Integration中的头等公民之一是一个
消息通道
实体。您始终可以在
IntegrationFlow
定义中设置端点之间的显式通道,并显式向它们发送消息

对于“合并”用例,我建议在
.handle()
之前放置一个
.channel()
,并为第二个目录声明第二个流,但在该流的末尾使用相同的
.channel()
将消息从该流“桥接”到第一个流的中间


请参阅参考手册中的更多信息:

谢谢@Artem。下面呢

    @Bean
public IntegrationFlow integrationFlowUi(JobLaunchingGateway jobLaunchingGateway) {
    return IntegrationFlows.from(Files.inboundAdapter(new File(incomingDirUi)).
                    filter(new SimplePatternFileListFilter("*.csv")).
                    filter(new AcceptOnceFileListFilter<>()),
            c -> c.poller(Pollers.fixedRate(500).maxMessagesPerPoll(1))).
            channel("to-bridge").
            handle(fileMessageToJobRequest()).
            handle(jobLaunchingGateway).
            log(LoggingHandler.Level.WARN, "headers.id + ': ' + payload").
            get();
}

@Bean
public IntegrationFlow integrationFlowSftp(JobLaunchingGateway jobLaunchingGateway) {
    return IntegrationFlows.from(Files.inboundAdapter(new File(incomingDirSftp)).
                    filter(new SimplePatternFileListFilter("*.csv")).
                    filter(new AcceptOnceFileListFilter<>()),
            c -> c.poller(Pollers.fixedRate(500).maxMessagesPerPoll(1))).
            channel("to-bridge").get();
}
@Bean
公共集成流集成流UI(JobLaunchingGateway JobLaunchingGateway){
返回IntegrationFlows.from(Files.inboundAdapter(新文件(incomingDirUi))。
过滤器(新的SimplePatternFileListFilter(“*.csv”))。
筛选器(新的AcceptOnceFileListFilter()),
c->c.poller(Pollers.fixedRate(500.maxMessagesPerPoll(1)))。
渠道(“至桥梁”)。
句柄(fileMessageToJobRequest())。
句柄(jobLaunchingGateway)。
日志(LoggingHandler.Level.WARN,“headers.id+”:“+负载”)。
get();
}
@豆子
公共集成流集成流SFTP(JobLaunchingGateway JobLaunchingGateway){
返回IntegrationFlows.from(Files.inboundAdapter(新文件(incomingDirSftp))。
过滤器(新的SimplePatternFileListFilter(“*.csv”))。
筛选器(新的AcceptOnceFileListFilter()),
c->c.poller(Pollers.fixedRate(500.maxMessagesPerPoll(1)))。
通道(“到桥接器”).get();
}

谢谢@Artem。这会导致以下结果吗?对,没错。正是我给你的建议。现在清楚它是如何工作的了吗?