Eine asynchrone Datenverarbeitungspipeline implementieren
Du baust ein Analytics-Dashboard, das Benutzerdaten und Aktivitätsprotokolle aus getrennten Services abrufen und anschließend verarbeiten soll, um eine Benutzerzusammenfassung zu erstellen. Dieser Vorgang soll asynchron erfolgen, damit deine Anwendung reaktionsfähig bleibt. Deine Aufgabe ist es, das mit CompletableFuture umzusetzen.
Die Klassen UserData und UserSummary sind bereits für dich geladen.
Diese Übung ist Teil des Kurses
Codeoptimierung in Java
Anleitung zur Übung
- Füge das Abrufen der Benutzerdaten im
CompletableFuturehinzu. - Füge die Verarbeitung der Benutzerdaten im
CompletableFuturehinzu. - Füge die Fehlerbehandlung im
CompletableFuturehinzu.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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) {}
}
}