Отправка HTTP-ответа без ожидания выполнения методов Spring Webflux Rest

#java #spring-boot #rest

Вопрос:

У меня есть интерфейс REST, который получает данные электронной почты. Эти почтовые данные будут отправлены на указанный почтовый адрес. После успешной отправки почты я также хочу отправить почтовый запрос Webclient в другую службу(это не часть вопроса, но просто для того, чтобы дать вам представление о том, что я планирую, и я еще не закончил с этой частью). Что происходит прямо сейчас, так это то, что выполняется полный код, а затем отправляется HTTP-ответ для СОЗДАННОГО. Я этого не хочу, я хочу немедленно отправить HTTP-ответ для СОЗДАННОГО, а затем выполнить остальную часть кода.

 @PostMapping
@ResponseStatus(HttpStatus.CREATED) // Should be send immediatly back
private void receiveMailData(@RequestBody MailData mailData) throws IOException, MessagingException {
    sendService.sendMail(mailData)
}
 

А вот и sendMail-Метод

 public void sendMail(MailData mailData) throws MessagingException, IOException {
    MimeMessage message = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom("****");
    helper.setTo("****");
    helper.setSubject("*****");
    helper.setText("****",false);
    javaMailSender.send(message);
    webClientService.sendAnswerToWebService(new ResponseMailData("IDofRequest","SUCCEEDED"));
}
 

Также здесь приведен код Webclientservice(еще не закончен, это просто для того, чтобы дать вам общее представление)

 @Service
public class WebClientService {

private final WebClient webClient;

public WebClientService(WebClient.Builder webClientBuilder) {
    this.webClient = webClientBuilder
            .baseUrl("http://localhost:8084")
            .build();
}


public void sendAnswerToWebService(ResponseMailData responseMailData){

    // Here comes the Webclient POST-Request not done yet
}
 

}

Я немного упростил его, но это общая идея. Я подумал, может быть, я смогу решить эту проблему с помощью EventListener или я могу работать здесь с Mono или Flux? У меня еще нет такого опыта с весной. Каков был бы правильный подход?