У меня есть весенний пакетный проект. Он читает из входного файла, обрабатывает строки, а затем записывает, создает файл и вставляет строки, поступающие от процессора. Сама партия отлично работает. Чтение входного файла, строк процесса и выходного файла создан.
Проблема в том, что подпружиненная партия выполнена с кварцем, который запускается каждую минуту. Первая итерация является успешной, как описано выше. Но второй и nexts cra sh, потому что он говорит, что файл уже существует.
public class StaticItemWriter extends FlatFileItemWriter<String>{
private static final Logger LOG = LoggerFactory.getLogger(StaticItemWriter.class);
private String outputPathName;
private static final String OUTPUT = "OUTPUT_";
private static final String EXTENSION = ".txt";
private FileSystemResource fsr;
InputStream is = null;
String resource = "C:/Users/zek896/Notification_HUB/batch/smai/files/input/sms_sent/";
public StaticItemWriter() {
this.setShouldDeleteIfExists(false);
DelimitedLineAggregator<String> lineAggregator = new DelimitedLineAggregator<>();
lineAggregator.setDelimiter(";;");
this.setLineAggregator(lineAggregator);
}
public StaticItemWriter execute(SimpleDateFormat sdf) {
DateFormat df = sdf;
outputPathName = resource + OUTPUT + df.format(new Date()) + EXTENSION;
System.out.println("outputPathName: " + outputPathName);
this.fsr = new FileSystemResource(outputPathName);
this.setResource(fsr);
this.setAppendAllowed(false);
this.setShouldDeleteIfExists(false);
DelimitedLineAggregator<String> lineAggregator = new DelimitedLineAggregator<>();
lineAggregator.setDelimiter(";;");
this.setLineAggregator(lineAggregator);
return this;
}
}
@Bean
public ItemWriter<String> write() {
System.out.println("writer");
return new StaticItemWriter().execute(new SimpleDateFormat("yyyyMMddHHmmss"));
}
@Bean
public Step aggregationStep() {
return stepBuilder.get("aggregationStep")
.<Person, String> chunk(100)
.reader(eligibleCustomersReader())
.processor(dispatchRequestProcessor())
.writer(write())
.faultTolerant()
.build();
}
Должен ли я использовать тасклет как-то для его решения?
Большое спасибо за вашу помощь.
С уважением