Maison > Java > javaDidacticiel > Comment exécuter une tâche asynchrone dans Spring WebFlux sans bloquer la réponse principale ?

Comment exécuter une tâche asynchrone dans Spring WebFlux sans bloquer la réponse principale ?

PHPz
Libérer: 2024-07-28 07:37:06
original
1057 Les gens l'ont consulté

How to Run an Asynchronous Task in Spring WebFlux Without Blocking the Main Response?

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 Mono<ResponseDTO> publishPackage(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<Void> doSomethingInAsync(RequestDTO requestDTO, ResponseDTO responseDTO) {
    return Mono.delay(Duration.ofSeconds(5))
        .then(); // Converts the delayed Mono<Long> to Mono<Void>
}

Copier après la connexion

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.

Questions :

Comment puis-je m'assurer que doSomethingInAsync s'exécute en arrière-plan sans bloquer la réponse ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal