2017-12-07 13 views
1

編集済み 私はSpringインテグレーションには新しく、サービスアクティベータ(ハンドルメソッド経由)からチャネルにデータを渡そうとしています。.handle()でサービスアクティベータの出力チャネルをコンフィグレーションする

@Bean 
public IntegrationFlow processFileFlow() { 
    return IntegrationFlows 
      .from("fileInputChannel") 
      .transform(fileToStringTransformer()) 
      .handle("fileProcessor", "process") 
      .channel("xmlChannel") 
      .get(); 
} 

@Bean 
public DirectChannel fileInputChannel(){ 
    return new DirectChannel(); 
} 

@Bean 
public DirectChannel xmlChannel(){ 
    return new DirectChannel(); 
} 

@Bean 
public FileProcessor fileProcessor() { 
    return new FileProcessor(); 
} 

@Bean 
public IntegrationFlow enrichDataFlow() { 
    return IntegrationFlows 
      .from("xmlChannel") 
      .handle("enricher", "enrichProduct") 
      .channel("bvChannel") 
      .get(); 
} 

@Bean 
public Enricher enricher() { 
    return new Enricher(); 
} 

これは、これはEnricherクラスである

public class FileProcessor { 

    @ServiceActivator(outputChannel = "xmlChannel") 
    public String process(Message<String> msg) { 
     String content = msg.getPayload(); 
     return content; 
    } 
} 

FileProcessorクラスである: "..製品を豊か" パブリッククラスEnricher {

public void enrichProduct(Message<String> msg) { 
     System.out.println("Enriching product " + msg); 
    } 
} 

メッセージ印刷取得されていません私は何が間違っているのか分かりません。

答えて

0

.channel("xmlChannel")はあなたのために機能しますか?

これは、メッセージチャネル上の1つのエンドポイントから別のエンドポイントに、IntegrationFlowを組み込む正しい方法です。

@ServiceActivatoroutputChannel = "xmlChannel"は、inputChannelが存在しないという理由だけでは機能しません。 .handle()以上のものは、これらの属性をすべて無視し、メソッドを直接処理します。

+0

ありがとうございます。同じファイルに定義されている別の統合フローがあるため、.channel( "xmlChannel")が機能していないと推測しています。それに応じて質問の詳細を編集します。 –

+0

'fileOrocessor'はとにかく呼び出されていますか? 'org.springframework.integration'カテゴリのデバッグログを有効にすると、メッセージがどのように流れていくのかを見ることができます –

関連する問題