非同期プロセッサー

非同期プロセッサーは、アイテムの処理をスケーリングできます。非同期プロセッサーの使用例では、AsyncItemProcessor はディスパッチャーとして機能し、新しいスレッドでアイテムの ItemProcessor のロジックを実行します。項目が完了すると、Future が AsyncItemWriter に渡されて書き込まれます。

非同期アイテム処理を使用してパフォーマンスを向上させることができ、基本的に fork-join シナリオを実装できます。AsyncItemWriter は結果を収集し、すべての結果が利用可能になるとすぐにチャンクを書き戻します。

  • Java

  • XML

次の例は、Java で AsyncItemProcessor を構成する方法を示しています。

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

次の例は、XML で AsyncItemProcessor を構成する方法を示しています。

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 プロパティは選択した TaskExecutor を参照します。

  • Java

  • XML

次の例は、Java で AsyncItemWriter を構成する方法を示しています。

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

次の例は、XML で AsyncItemWriter を構成する方法を示しています。

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 への参照です。