1

Java DSLを使用してディレクトリとハンドラの統合フローをポーリングするセットアップファイルポーラー/チャネルアダプタがあります。しかし、別のディレクトリ/チャネルアダプタとブリッジを同じハンドラに追加する方法については、何の参考も得ていません。ここに私のコードです。Spring統合2つの異なるディレクトリをポーリングする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(); 
} 

答えて

1

スプリング統合の最初の市民の1人はMessageChannelエンティティです。 IntegrationFlow定義内のエンドポイント間の明示的なチャネルを常に設定して、明示的にそれらにメッセージを送信することができます。ユースケースは、私は.handle().channel()を配置することをお勧めと第二のディレクトリのための第二流を宣言したが、その流れの終わりに、この流れから同じ.channel()に「ブリッジ」のメッセージを使用することになり、「マージ」

あなたのために

最初のものの真ん中に。 https://docs.spring.io/spring-integration/docs/5.0.0.RELEASE/reference/html/java-dsl.html#java-dsl-channels

+0

ありがとう@Artem。その結果は次のようになりますか? – Sudhirkd

+0

それは正しいです。まさに私があなたのために提案したもの。それは今どのように動作するのかは明らかですか? –

1

おかげ@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(); 
} 
関連する問題