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");
}
}
Transformerは正常に動作しています。通常の方法でファイルをロードし、ゲートウェイ経由でトランスフォーマを呼び出しました。全体の流れはうまくいく。しかし、私はFile Adapterを使ってファイルを読み込み、それが動作しないようにしたかったのです。 –
あなたの "but"はログとスタック状態で確認してください。 –
私に見つけましょう...ありがとう –