0
私は、JsonResouurceAsyncPagingItemReader
のSpringバッチプロジェクトを持っています。カスタムはItemReader
で、Webサービスから非同期にデータを取得します。SpringバッチカスタムItemReaderが開かない
このカスタムItemReader
は、ExecutorService
を使用して、Webサービスへの呼び出しを送信します。しかし、私はそれを初期化するのに問題があります。
AbstractItemCountingItemStreamItemReader
で提供されるdoOpen
メソッドで初期化しようとしましたが、doOpen
が呼び出されていないようです。
ItemReader
は、このようにスプリングによって注入されている:
@Bean
@JobScope
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun,
@Value("#{jobParameters['codInt']}") Long codInt) {
Map<String, Object> parameterValues = new HashMap<String, Object>();
if (lastRun != null) {
parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat));
}
if (codInt != null) {
parameterValues.put("codInt", codInt);
}
JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>();
reader.setHttpUrl(server + pathTemplate);
reader.setRestTemplate(restTemplate);
reader.setParameterValues(parameterValues);
reader.setPageSize(pageSize);
return reader;
}
そしてさらに、このようなStep
で使用:
@Bean
public Step importProductStep() {
return stepBuilderFactory.get("importProductJobStep")
.<Map<String, Object>, Product>chunk(1000)
.reader(reader(null, null))
.processor(processor())
.writer(writer())
.build();
}
間違っている可能性が何上の任意のアイデア?
ありがとうございました!戻り値の型をItemReaderからItemStreamReaderに変更し、完璧に機能しました。 – gantzer89