web-dev-qa-db-ja.com

Spring Batchのステップ、タスクレット、チャンクの違い

私は、Spring Batchで非常に新しいです。誰も私を助けて、春のバッチのステップ、タスクレット、チャンクの違いを説明できますか?また、いくつかのステップを並行して実行する必要があるかどうか、もう1つ疑問があります。

23

まあそれは実際には良い質問です。設定の例を次に示します。

<job id="sampleJob" job-repository="jobRepository">
    <step id="step1" next="step2">
        <tasklet transaction-manager="transactionManager">
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
        </tasklet>
    </step>
    <step id="step2">
         <tasklet ref="myTasklet"/>
    </step>
</job>

ジョブがあります。このジョブはステップで構成されています。ほとんどの場合、これらの手順は連続しています。ステップで作業を行う必要がある順序を定義します。ステップ1、ステップ2、ステップ3の順に行い、ステップ3が失敗した場合はステップ4を行うか、ステップ5に直接進みます。

ステップで行われることはタスクレットで表され、タスクを実行します。

春のバッチでは、主にチャンク指向の処理を行います:リーダー、プロセッサー、ライターを使用します。公式文書から:

チャンク指向処理とは、データを一度に1つずつ読み取り、トランザクション境界内で書き出される「チャンク」を作成することです。

ただし、独自のタスクレットを作成して、ステップで設定することができます。たとえば、SQLクエリを実行するタスクレット。 (ここの例: 春バッチでテーブルを削除するタスクレット

そのため、ステップはジョブ内で順序付けられ、各ステップにはタスクを実行するタスクレットが含まれます。これらのタスクレットの1つ(おそらく最も使用されるもの)は、チャンク指向の処理タスクレットです。

好奇心が強い方は、 ChunkOrientedTasklet's doc をご覧ください。ご覧のとおり、Taskletインターフェイスを実装しています。

詳細: http://docs.spring.io/spring-batch/reference/html/configureStep.html

そして、はい、春バッチはフローを使用して並列処理用にうまく作られています: http://docs.spring.io/spring-batch/reference/html/scalability.html

39
Asoub