Stepについて説明します。
Spring Batch 3.0では、以下のStepモデルを提供しています。
チャンクモデル
チャンクモデルはStep処理をItemReader、ItemProcessor、ItemWriterの3つに分けたモデルです。チャンクモデルはItemReaderで一括に取得するデータ量をcommit-intervalで指定することができます。commit-intervalについては、“4.7.4.1.2 commit-intervalについて”を参照してください。
記述形式
Job定義ファイル(job.xml):
<batch:job id="testJob"> <batch:step id="step1" next="step2"> <batch:tasklet transaction-manager="jdbcTransactionManager"> <batch:chunk reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="10000" /> </batch:tasklet> </batch:step> <batch:step id="step2"> … </batch:step> </batch:job> |
タグ一覧
タグ一覧を以下に示します。
タグ名 | 概要 | |||
job | “4.7.3.2 Job定義”を参照してください。 | |||
step | Stepの開始と終了 | |||
tasklet | タスクレットの定義 | |||
chunk | チャンクの定義 | |||
next | “4.8.1 条件分岐”を参照してください。 | |||
end | ||||
fail |
タグの説明
step
Stepの開始と終了を定義します。
指定可能な属性名を以下に示します。
属性名 | 必須 | 意味 |
id | ○ | 定義するStepIDを指定します。StepIDはNCName型が使用されます。 |
next | - | 次に実行するStepIDを指定します。 |
tasklet
タスクレットを定義します。
指定可能な属性名を以下に示します。
属性名 | 必須 | 意味 |
transaction-manager | - | Stepで使用するトランザクションマネージャを指定します。指定しない場合は、“transactionManager”が指定されます。 |
ポイント
ItemReaderとItemWriterにcsvファイルを使用する場合は、transaction-managerに“org.springframework.batch.support.transaction.ResourcelessTransactionManager”を設定してください。ResourcelessTransactionManagerはトランザクションを行わない場合に使用します。
chunk
チャンクを定義します。
指定可能な属性名を以下に示します。
属性名 | 必須 | 意味 |
reader | ○ | Stepで使用するItemReaderを指定します。 |
processor | - | Stepで使用するItemProcessorを指定します。 |
writer | ○ | Stepで使用するItemWriterを指定します。 |
commit-interval | - | ItemReaderで一括に取得するデータ量を指定します。指定しない場合はデフォルト値“10000”が指定されます。 |
ポイント
“commit-interval”の指定範囲を以下に示します。
0~2147483647
“0”を指定した場合は、デフォルト値“10000”が指定されます。
commit-intervalにはItemReaderで一括に取得するデータ量を指定します。
一括で取得するデータ量が多いほどStepの処理速度が速くなります。データ量が多いほど多くのJavaヒープメモリを使用するため、Javaヒープメモリが枯渇し、Jobがエラー終了してしまうリスクがあります。
commit-intervalの設定値は、業務環境に合った値を設定してください。
コマンドラインからJobを起動し、StopオプションでJobを停止させるためには、JobExplorer定義が必要です。JobExplorer定義は、データソースを定義する必要があります。データソースは、JobRepositoryと同じデータソースを指定してください。JobExplorer定義例を以下に示します。
例
Job定義(job.xml):
<!-- JobExplorer定義 --> <bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"> <property name="dataSource" ref="jobRepository_DataSource" /> </bean> |