1

我有设置文件轮询器/通道适配器,它使用 Java DSL 轮询目录和处理程序集成流。但我没有得到任何参考如何添加另一个目录/通道适配器并桥接到同一个处理程序。这是我的代码。

@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();
}
4

2 回答 2

2

谢谢@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();
}
于 2017-12-13T18:47:19.187 回答
1

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

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

在参考手册中查看更多信息:https ://docs.spring.io/spring-integration/docs/5.0.0.RELEASE/reference/html/java-dsl.html#java-dsl-channels

于 2017-12-12T23:01:51.397 回答