陆续运行IntegrationFlow

时间:2019-02-21 07:07:29

标签: spring spring-integration

我有两个IntegrationFlow用于导入Head和Position数据。 为了导入,我使用csv文件,它们以文件夹结构组织。 Head-CSV文件位于Head-Folder中,而Position-Files位于Position-Folder中。 csv文件的结构当然不同。

现在有必要在位置数据之前导入头数据。但是,如果没有可用的头数据,则无论如何都应处理位置文件夹。 (例如,用于更新现有负责人的职位)

目前,我有两个IntegrationFlow。每种情况一个。

是否有可能一个又一个地调用此Integrationflow?如果不是,是否有可能(通过聚合方法)由一个IntegrationFlow使用两个不同的MessageSource,并有可能检测到Head-Message-Source是Head还是Position和安全性。担任职位?

@Configuration
public class MyHeadFlowConfig    
    @Bean
    public IntegrationFlow myHeadFlow() {
        return IntegrationFlows.from(myHeadMessageSource, myPollerConsumer))
                .filter(new SimplePatternFileListFilter("*.csv"))
                .handle(myHeadJobConfig)
                .get();
    }
}

@Configuration
public class MyPositionFlowConfig    
    @Bean
    public IntegrationFlow myPositionFlow() {
        return IntegrationFlows.from(myPositionMessageSource, myPollerConsumer))
                .filter(new SimplePatternFileListFilter("*.csv"))
                .handle(myPositionJobConfig)
                .get();
    }
}

1 个答案:

答案 0 :(得分:1)

有许多方法可以完成此操作。

如果两个集成流在同一个JVM中运行,则最简单,最自然的方法是共享 channel 。基本上创建一个MessageChannel的实例,并将其连接到一个絮体的末尾和另一个絮体的开始。

floaA -> sharedChannel -> flowB

ApplicationEvent支持将是另一种方法。 当然还有一堆提供的入站/出站适配器。