【发布时间】:2021-11-07 22:40:18
【问题描述】:
我有一个包含两个主要步骤的 Spring Boot Batch 作业,第一个步骤是从电子表格中读取一堆行。第二个写入数据库。现在,它已设置为串行写入数据库
public CompositeItemWriter<SoftLayerData> compositeSoftlayerDataWriter(
JpaItemWriter<SoftLayerData> softlayerDataWriter) {
CompositeItemWriter<SoftLayerData> compositeWriter = new CompositeItemWriter<>();
compositeWriter.setDelegates(asList(softlayerDataWriter));
return compositeWriter;
}
问题是音量很大。由于没有理由维持任何秩序,我希望有多个作家。我试过这个:
final int writerCount = 10;
List<ItemWriter<? super SoftLayerData>> writers = new ArrayList<>(writerCount);
for(int counter=0;counter<writerCount;counter++) {
writers.add(new JpaItemWriter<SoftLayerData>());
}
CompositeItemWriter<SoftLayerData> result = new CompositeItemWriter<>();
result.setDelegates(writers);
return result;
但我收到的是IllegalArgumentException: No EntityManagerFactory specified。
我喜欢这种方法,但我怀疑我必须遵循一些非常复杂的 Spring Boot 方法。编写多个作家的最佳方法是什么?
谢谢, 樵夫
【问题讨论】:
-
是否需要两个步骤? step1 将项目写入哪里以及 step2 从哪里读取项目?为什么不使用单个面向块的步骤而不是两个步骤?
标签: java spring-boot jpa spring-data-jpa spring-batch