CommencezCommencez gratuitement

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

Vous créez un tableau de bord d'analyse qui doit récupérer les données des utilisateurs et les journaux d'activité à partir de services distincts, puis les traiter pour générer un sommaire utilisateur. Cette opération doit être effectuée de façon asynchrone afin de garder votre application réactive. Votre tâche est d'implanter cela avec CompletableFuture.

Les classes UserData et UserSummary sont déjà chargées pour vous.

Cette activité fait partie du cours

Optimiser le code en Java

Voir le cours

Instructions de l’exercice

  • 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 ce code d’exemple.

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