Здравствуйте, у меня есть поток интеграции, который разбивает файл на строку, преобразует каждую строку в POJO, а затем вставляет этот POJO в базу данных через исходящий шлюз JDB C.
Я хочу иметь возможность отправить одно электронное письмо после завершения процесса файла. В настоящее время я отправляю на канал smtpFlow после моего jdbcOutboundGateway, однако это отправляет электронное письмо после каждой вставки БД.
Вот мой текущий поток DSL
IntegrationFlow ftpFlow() {
return IntegrationFlows.from(
ftpSource(), spec -> spec.poller(Pollers.fixedDelay(5, TimeUnit.SECONDS)))
.split(splitFile())
.transform(this::transformToIndividualScore)
.handle(jdbcOutboundGateway(null))
.channel("smtpFlow")
.get();
Как получить этот поток для отправки только одного электронного письма после обработки всех файлов в jdbcOutboundGateway
?
Вот мой splitFile()
метод
@Bean
FileSplitter splitFile() {
FileSplitter fs = new FileSplitter(true, false);
fs.setFirstLineAsHeader("IndividualScore");
return fs;
Вот мой transformToIndividualScore
метод
@Transformer
private IndividualScore transformToIndividualScore(String payload) {
String[] values = payload.split(",");
IndividualScore is = new IndividualScore();
is.setScorecardDate(values[0]);
is.setVnSpId(values[1]);
is.setPrimaryCat(values[2]);
is.setSecondaryCat(values[3]);
is.setScore(Integer.parseInt(values[4]));
is.setActual(values[5]);
return is;
}