异步处理器

异步处理器有助于您扩展项目的处理能力。在异步处理器的使用场景中,AsyncItemProcessor 充当调度器,在新线程上执行某个项目的 ItemProcessor 逻辑。一旦项目完成,Future 将被传递给 AsyncItemWriter 进行写入。spring-doc.cadn.net.cn

因此,您可以通过使用异步项处理来提升性能,这基本上让您能够实现分叉 - 合并(fork-join)场景。AsyncItemWriter 会收集结果,并在所有结果可用后立即写回数据块。spring-doc.cadn.net.cn

以下示例展示了如何在 Java 中配置 AsyncItemProcessorspring-doc.cadn.net.cn

Java 配置
@Bean
public AsyncItemProcessor processor(ItemProcessor itemProcessor, TaskExecutor taskExecutor) {
    AsyncItemProcessor asyncItemProcessor = new AsyncItemProcessor();
    asyncItemProcessor.setTaskExecutor(taskExecutor);
    asyncItemProcessor.setDelegate(itemProcessor);
    return asyncItemProcessor;
}

以下示例展示了如何在 XML 中配置AsyncItemProcessorspring-doc.cadn.net.cn

XML 配置
<bean id="processor"
    class="org.springframework.batch.integration.async.AsyncItemProcessor">
  <property name="delegate">
    <bean class="your.ItemProcessor"/>
  </property>
  <property name="taskExecutor">
    <bean class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
  </property>
</bean>

delegate 属性引用您的 ItemProcessor Bean,而 taskExecutor 属性引用您选择的 TaskExecutorspring-doc.cadn.net.cn

以下示例展示了如何在 Java 中配置 AsyncItemWriterspring-doc.cadn.net.cn

Java 配置
@Bean
public AsyncItemWriter writer(ItemWriter itemWriter) {
    AsyncItemWriter asyncItemWriter = new AsyncItemWriter();
    asyncItemWriter.setDelegate(itemWriter);
    return asyncItemWriter;
}

以下示例展示了如何在 XML 中配置 AsyncItemWriterspring-doc.cadn.net.cn

XML 配置
<bean id="itemWriter"
    class="org.springframework.batch.integration.async.AsyncItemWriter">
  <property name="delegate">
    <bean id="itemWriter" class="your.ItemWriter"/>
  </property>
</bean>

同样,delegate 属性实际上是对您的 ItemWriter Bean 的引用。spring-doc.cadn.net.cn