2014-12-04 87 views
1

我们可以以某种方式在Spring集成中使用“子流”吗?如何处理子流程

我有许多不同的过程,将使用相同的“子流”。这些过程总是具有相同的部分,可以将其放入单独的文件中。

实施这些流程的正确方法是什么?

我试图找到一个解决方案,以在Spring集成中使用子流,但我找不到任何东西。

回答

1

一种简单的技术是将子流程置于具有“众所周知的”输入和输出通道的单独文件中(子流程从一个通道开始并以另一个通道结束)。然后,简单地<import/>子流并发送/消耗到/来自输入/输出通道。

或者,而不是进口可以使用Java DSL定义子流,并将其添加到需要分流 - 你的应用程序上下文...

@Configuration 
public class MySubflowDefinition { 

    @Bean 
    public IntegrationFlow subflow() { 
     return IntegrationFlows.from("someInChannel") 
      .transform(...) 
      ... 
      .channel("someOutChannel") 
      .get(); 
    } 
} 

对于一个比较正式的“子流”的定义,见spring-integration-flow extension。此解决方案还允许从同一应用程序上下文中的多个位置调用相同的子流。

spring-integration-java-dslspring-integration-flow都可以在春季回购和maven中央与(目前)版本1.0.0.RELEASE。

+0

如果您想在__same__应用程序上下文中的多个位置使用相同的子流,则需要使用'spring-integration-flow'解决方案。 – 2014-12-05 14:23:56

+0

感谢您的提示。 当您想要在多个地方使用子流时,这些解决方案是否也可以工作? 假设我们有Subflow1,它最初旨在将FTP文件从源目录传输到目标目录。 现在我们有3个不同的(主要)流程,我希望使用此Subflow1和不同的参数,如FTP服务器地址/目标目录。 我可以用你的建议吗? 它将如何工作?假设FTP目录'D'中有一个文件'F'。所有使用此子流程的主流都将收到相同的包? – 2014-12-05 14:33:45