で使用することができます。ジョブを実行しているとき(すなわちloadFile
)は春のリトライが、私は<code>ItemReader</code>を以下している春のバッチFlatFileItemReader
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.item.ItemStreamException;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.LineMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
@Service
public class MyReader extends FlatFileItemReader<Holding> {
@Autowired
public MyReader(LineMapper<Holding> lineMapper, File loadFile) {
setResource(new FileSystemResource(loadFile));
final int NUMBER_OF_HEADER_LINES = 1;
setLinesToSkip(NUMBER_OF_HEADER_LINES);
setLineMapper(lineMapper);
}
@Override
@Retryable(value=ItemStreamException.class, maxAttempts=5, [email protected](delay=1800000))
public void open(ExecutionContext executionContext) throws ItemStreamException {
super.open(executionContext);
}
}
ファイルを読み取ることが使用できない場合もあります。ファイルが利用できない場合は、30分ほどスリープ状態にしてからファイルを開こうとします。 5回の試行後にファイルが見つからない場合は、ItemStreamException
を投げて通常どおり失敗する可能性があります。
残念ながら、上記のコードではファイルの開封は再試行されません。オープンする最初の呼び出しではItemStreamException
がスローされ、オープンは再試行されません。
誰かがこれを行う方法を説明してもらえますか?注:SpringBootApplication
クラスには@EnableRetry
があります。
私は、Spring Batchの 'FlatFileItemReader'の外で動作するようにSpring Retryを取得することもできます。 OPで、私はSpring Batchの 'FlatFileItemReader'内でこれを動作させる方法を尋ねています。 – James