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
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) {}
}
}