CommencerCommencer gratuitement

Mettre en place un pipeline de traitement de données asynchrone

Vous développez un tableau de bord d’analytique qui doit récupérer les données utilisateur et les journaux d’activité depuis des services distincts, puis les traiter pour créer un récapitulatif utilisateur. Cette opération doit être effectuée de manière asynchrone pour garder votre application réactive. Votre tâche est de l’implémenter avec CompletableFuture.

Les classes UserData et UserSummary ont été préchargées pour vous.

Cet exercice fait partie du cours

Optimiser son code en Java

Afficher le cours

Instructions

  • Ajoutez la récupération des données utilisateur dans le CompletableFuture.
  • Ajoutez le traitement des données utilisateur dans le CompletableFuture.
  • Ajoutez la gestion des exceptions dans le CompletableFuture.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

public class AsyncDashboard {
    public static void main(String[] args) throws Exception {        
        CompletableFuture userSummaryFuture = CompletableFuture
            // Fetch the user data
            .____(() -> fetchUserData("user123"))
            
            // Create summary based on fetched data
            .____(userData -> createSummary(userData))
            
            // Add exception handling
            .____(ex -> new UserSummary(new UserData("error", "Error User"))); 
        Thread.sleep(5000);
    }
    
    private static UserData fetchUserData(String userId) {
        simulateNetworkLatency(300);
        return new UserData(userId, "John Doe");
    }
    
    private static UserSummary createSummary(UserData userData) {
        simulateNetworkLatency(200);
        return new UserSummary(userData);
    }
    
    private static void simulateNetworkLatency(int millis) {
        try { Thread.sleep(millis); } catch (InterruptedException e) {}
    }
}
Modifier et exécuter le code