Я работаю с Spring WebFlux, и мне нужно выполнить асинхронную задачу как часть метода, который не должен блокировать основной ответ пользователю. В частности, я хочу вызвать асинхронный метод после выполнения основной задачи, но без задержки ответа.
Вот упрощенная версия того, чего я пытаюсь достичь:
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 }
После завершения этого вызова я хочу выполнить doSomethingInAsync(requestDTO, responseDTO) асинхронно.
Метод doSomethingInAsync должен быть неблокирующим и не задерживать основной ответ.
Проблема:
Метод doSomethingInAsync выполняется, но похоже, что он блокирует ответ или работает не асинхронно, как предполагалось. Как я могу гарантировать, что doSomethingInAsync работает асинхронно и не блокирует ответ пользователю?
Подробности:
publishPackageService.doSomething(requestDTO): возвращает Mono.
doSomethingInAsync(requestDTO, responseDTO): асинхронный метод, который я хочу запустить, не блокируя ответ.
Вопросы:
Как обеспечить работу doSomethingInAsync в фоновом режиме, не блокируя ответ?
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3