Estoy trabajando con Spring WebFlux y necesito realizar una tarea asincrónica como parte de un método que no debería bloquear la respuesta principal al usuario. Específicamente, quiero llamar a un método asincrónico después de completar la tarea principal, pero sin retrasar la respuesta.
Aquí hay una versión simplificada de lo que estoy tratando de lograr:
public MonopublishPackage(RequestDTO requestDTO) { return publishPackageService.doSomething(requestDTO) .flatMap(responseDTO -> doSomethingInAsync(requestDTO, responseDTO) .thenReturn(responseDTO) ); } // Method that simulates an asynchronous task with a 5-second delay public Mono doSomethingInAsync(RequestDTO requestDTO, ResponseDTO responseDTO) { return Mono.delay(Duration.ofSeconds(5)) .then(); // Converts the delayed Mono to Mono }
Después de que se complete esta llamada, quiero ejecutar doSomethingInAsync(requestDTO, ResponseDTO) de forma asincrónica.
El método doSomethingInAsync no debe bloquear y no retrasar la respuesta principal.
Problema:
El método doSomethingInAsync se está ejecutando, pero parece que podría estar bloqueando la respuesta o no ejecutándose de forma asincrónica como se esperaba. ¿Cómo puedo asegurarme de que doSomethingInAsync se ejecute de forma asincrónica y no bloquee la respuesta al usuario?
Detalles:
publishPackageService.doSomething(requestDTO): Devuelve un Mono.
doSomethingInAsync(requestDTO, ResponseDTO): es un método asincrónico que quiero ejecutar sin bloquear la respuesta.
Preguntas:
¿Cómo puedo asegurarme de que doSomethingInAsync se ejecute en segundo plano sin bloquear la respuesta?
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3