Untitled :: Spring Batch 参考文档
异步处理器
异步处理器帮助您扩展项目的处理能力。在异步处理器使用场景中,AsyncItemProcessor 充当调度器,在新线程上执行 ItemProcessor 对项目的处理逻辑。项目完成后,Future 会被传递给 AsyncItemWriter 进行写入操作。
因此,您可以通过使用异步项目处理来提高性能,这基本上允许您实现分叉-合并场景。AsyncItemWriter 会收集结果,并在所有结果可用时立即写回数据块。
- Java
- XML
以下示例展示了如何在 Java 中配置 AsyncItemProcessor:
@Bean
public AsyncItemProcessor processor(ItemProcessor itemProcessor, TaskExecutor taskExecutor) {
AsyncItemProcessor asyncItemProcessor = new AsyncItemProcessor();
asyncItemProcessor.setTaskExecutor(taskExecutor);
asyncItemProcessor.setDelegate(itemProcessor);
return asyncItemProcessor;
}
以下示例展示了如何在 XML 中配置 AsyncItemProcessor:
<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 属性则指向你选择的 TaskExecutor。
- Java
- XML
以下示例展示了如何在 Java 中配置 AsyncItemWriter:
@Bean
public AsyncItemWriter writer(ItemWriter itemWriter) {
AsyncItemWriter asyncItemWriter = new AsyncItemWriter();
asyncItemWriter.setDelegate(itemWriter);
return asyncItemWriter;
}
以下示例展示了如何在 XML 中配置 AsyncItemWriter:
<bean id="itemWriter"
class="org.springframework.batch.integration.async.AsyncItemWriter">
<property name="delegate">
<bean id="itemWriter" class="your.ItemWriter"/>
</property>
</bean>
同样,delegate 属性实际上是对你的 ItemWriter bean 的引用。