2016-09-20 3 views
0

を最初から始めるんが、再試行のための私の設定です:春のバッチ再試行 - 春はそれが中断したところから開始するか、以下

以下
<batch:job id="myLookUpLoadJob"> 
      <batch:step id="myLookUpTruncateStep"> 
       <batch:tasklet ref="myLookupTruncateTasklet" /> 
       <batch:next on="*" to="myLookUpLoadStep"/> 
      </batch:step> 
      <batch:step id="myLookUpLoadStep">    
       <batch:tasklet> 
         <batch:chunk reader="myLookupItemReader" 
           writer="myLookupItemWriter" commit-interval="100" retry-limit="2"> 
           <retryable-exception-classes> 
             <include class=" org.springframework.dao.DataAccessResourceFailureException"/> 
           </retryable-exception-classes> 
         </batch:chunk> 
       </batch:tasklet>   
      </batch:step> 
    </batch:job> 

は、私は春のドキュメントから回答を得ることができないのですそのために私の質問です - 入力を感謝します

リトライが発生したときに200行を処理した後で例外が発生すると、行201または行1から開始されますか?

編集

私が解決しようとしている問題は、ジョブの実行時に、すぐに(100行)最初のチャンクのコミット後、ItemReaderへの接続が(リセット)終了してしまうことです。その後、ジョブは再開され、正常に完了します。

これは役立つかもしれない場合、私は疑問に思って:AbstractCursorItemReader

から

ステップ処理の残りの部分と、カーソルのために使用された接続を共有するオプション(setUseSharedExtendedConnection(ブール値)がありますこのフラグをtrueに設定すると、ステップ処理の一部として実行される各コミット後に接続が閉じられて解放されないように、ExtendedConnectionDataSourceProxyでDataSourceをラップする必要があります。また、JDBC 3.0以降をサポートするJDBCドライバも使用する必要がありますカーソルが追加されて開きます'HOLD_CURSORS_OVER_COMMIT'オプションが有効になっています。

+0

あなたはどんな読者を使っていますか? –

+0

org.springframework.batch.item.database.JdbcCursorItemReader。また、読み書きは2つの異なるデータソースに対して行われるため、最初はXA分散トランザクションを実行することを考えました。 –

+0

@MichaelMinella - 更新はありましたか?私は来週早々にテストを再開する予定です(今週はデプロイメントがあるので)。 AbstractCursorItemReader内のドキュメントのUseSharedExtendedConnectionは試行錯誤しているようです。 –

答えて

1

これは読者によって異なります。 ItemReaderの実装では、ItemStreamインターフェイスコールバックを使用してExecutionContextに独自の状態を維持する責任があります。 ItemReaderItemStream#updateメソッド経由で状態(行番号)を保持していて、ItemReaderItemSteam#openコールバックメソッドを使用して状態を復元する場合は、正しい行で再起動すると考えられます。すべてのSpringは、ItemReaderの実装では、理にかなってこの機能を利用しています。あなたの設定にmyLookupItemReaderが何であるかについての洞察がないので、あなたのことがわかるかどうかだけは分かりません。

+0

詳細な返信には@Michaelに感謝します。 SpringのItemReader - JdbcCursorItemReaderの実装を使用しているため、デフォルトの動作が有効です。もう1つの質問 - 仕事を同じようにやり直すだろうか? –

+0

質問を編集 - 詳細を追加 –

関連する問題