2014-12-04 120 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