2017-02-28 13 views
0

ファイルインバウンドチャネルアダプタでサンプルプログラムを試しています。私はちょうどアダプタを使用してファイルを読み取ってマップに変換するためにトランスフォーマに渡し、最後にマップを印刷するためにサービスアクティベータに渡します。春の統合 - ファイルインバウンドチャネルアダプタ

プログラムを実行すると、アダプタからトランスフォーマーに到達していますが、サービスアクティベータにはまったく到達していません。

ここでインバウンドチャネルアダプタを使用しているため、ゲートウェイをエントリポイントとして使用していません。これは間違っていますか?

@Configuration 
public class SpringIntegrationAdapterConfig { 

static Logger log = Logger.getLogger(SpringIntegrationAdapterConfig.class); 

@Bean 
@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "1000")) 
public MessageSource<File> fileReadingMessageResource(){ 
    FileReadingMessageSource source = new FileReadingMessageSource(); 
    source.setDirectory(new File("C:\\Rajashree\\work\\test")); 
    source.setFilter(new SimplePatternFileListFilter("Sample.csv")); 

    log.info("Reading file using File Adapter"); 

    return source; 
} 
} 

@Component 
public class FileService { 

static Logger log = Logger.getLogger(FileService.class); 

@Transformer(inputChannel = "fileInputChannel", outputChannel = "mappingChannel") 
public List<Map<String, String>> readFile(File file){ 
    log.info(file.getName()); 

    List<Map<String, String>> dataList = new ArrayList<>(); 
    CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(); 

    try(CSVParser parser = new CSVParser(new FileReader(file), csvFormat)){ 
     parser.getRecords().stream().map(e -> dataList.add(e.toMap())).collect(Collectors.toList()); 
     log.info(dataList); 

    } catch (IOException e) { 
     log.error("File read Error : " + e); 
    } 

    return dataList; 
    } 
} 


@Component 
public class MappingTransformer { 

    @Transformer(inputChannel = "mappingChannel", outputChannel = "printChannel") 
    public List<Map<String, String>> mapFields(List<Map<String, String>> dataList){ 
     System.out.println("File mapped :: " + dataList); 
     return dataList; 
    } 
} 

    @MessageEndpoint 
    public class printService{ 

    @ServiceActivator(inputChannel="printChannel", outputChannel= "outputChannel") 
    public void print(List<Map<String, String>> dataList){ 
     System.out.println("Message Printed"); 
    } 
    } 

答えて

0

ログには面白いことがあります。あなたの変圧器がエラーをスローするように見えます。だからあなたは次のコンポーネントに到達できません。

さらに、org.springframework.integrationカテゴリのDEBUGを有効にし、メッセージの流れをログで調べることができます。

+0

Transformerは正常に動作しています。通常の方法でファイルをロードし、ゲートウェイ経由でトランスフォーマを呼び出しました。全体の流れはうまくいく。しかし、私はFile Adapterを使ってファイルを読み込み、それが動作しないようにしたかったのです。 –

+0

あなたの "but"はログとスタック状態で確認してください。 –

+0

私に見つけましょう...ありがとう –