- Чтение данных
- Сохранение данных в БД
- Вызов REST-сервиса, который будет читать только что сохраненные данные
Код: Выделить всё
@Service
public class ReportService {
private final MyFeignClient feignClient;
@EventListener
@Transactional(propagation = Propagation.REQUIRED)
public void handleUploadedFile(MyEvent event) {
final var dataHeader = saveReportData(event);
validate(dataHeader);
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public DataHeader saveReportData(MyEvent event) {
var dataHeader = DataHeader.builder()
.event(event)
.createdTs(LocalDateTime.now())
.build();
return dataHeaderRepository.save(dataHeader);
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void validate(DataHeader dataHeader) {
try {
final var response = feignClient.execute(ValidateRequest.builder()
.dataHeaderId(dataHeader.getId())
.build());
} catch (Exception e) {
log.error("Failed for DataHeader {}", e, dataHeader.getId());
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... the-method