Je travaille avec Spring WebFlux et je dois effectuer une tâche asynchrone dans le cadre d'une méthode qui ne doit pas bloquer la réponse principale à l'utilisateur. Plus précisément, je souhaite appeler une méthode asynchrone après avoir terminé la tâche principale, mais sans retarder la réponse.
Voici une version simplifiée de ce que j'essaie de réaliser :
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 }
Une fois cet appel terminé, je souhaite exécuter doSomethingInAsync(requestDTO, ResponseDTO) de manière asynchrone.
La méthode doSomethingInAsync doit être non bloquante et ne pas retarder la réponse principale.
Problème:
La méthode doSomethingInAsync est en cours d'exécution, mais il semble qu'elle bloque la réponse ou ne s'exécute pas de manière asynchrone comme prévu. Comment puis-je m'assurer que doSomethingInAsync s'exécute de manière asynchrone et ne bloque pas la réponse à l'utilisateur ?
Détails:
publishPackageService.doSomething(requestDTO) : renvoie un Mono.
doSomethingInAsync(requestDTO, ResponseDTO) : est une méthode asynchrone que je souhaite exécuter sans bloquer la réponse.
Des questions:
Comment puis-je m'assurer que doSomethingInAsync s'exécute en arrière-plan sans bloquer la réponse ?
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3