|
当前版本仍在开发中,尚不被视为稳定版本。最新稳定版请使用 Spring Batch 文档 6.0.2! |
异步处理器
异步处理器可以帮助你扩展条目处理能力。在异步处理器的使用场景中,
AsyncItemProcessor 充当调度器,在新线程中执行某个条目的
ItemProcessor 逻辑。条目处理完成后,会将对应的 Future
传递给 AsyncItemWriter 进行写出。
因此,通过异步条目处理可以提升性能,本质上相当于实现一种 fork-join 场景。
AsyncItemWriter 会收集处理结果,并在所有结果都可用后立即将该 chunk 写出。
-
Java
-
XML
下面的示例展示了如何在 Java 中配置 AsyncItemProcessor:
Java Configuration
@Bean
public AsyncItemProcessor processor(ItemProcessor itemProcessor, TaskExecutor taskExecutor) {
AsyncItemProcessor asyncItemProcessor = new AsyncItemProcessor();
asyncItemProcessor.setTaskExecutor(taskExecutor);
asyncItemProcessor.setDelegate(itemProcessor);
return asyncItemProcessor;
}
下面的示例展示了如何在 XML 中配置 AsyncItemProcessor:
XML Configuration
<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:
Java Configuration
@Bean
public AsyncItemWriter writer(ItemWriter itemWriter) {
AsyncItemWriter asyncItemWriter = new AsyncItemWriter();
asyncItemWriter.setDelegate(itemWriter);
return asyncItemWriter;
}
下面的示例展示了如何在 XML 中配置 AsyncItemWriter:
XML Configuration
<bean id="itemWriter"
class="org.springframework.batch.integration.async.AsyncItemWriter">
<property name="delegate">
<bean id="itemWriter" class="your.ItemWriter"/>
</property>
</bean>
同样,delegate 属性实际上引用的是你的 ItemWriter Bean。