LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Füge das Abrufen der Benutzerdaten im CompletableFuture hinzu.
  • Füge die Verarbeitung der Benutzerdaten im CompletableFuture hinzu.
  • Füge die Fehlerbehandlung im CompletableFuture hinzu.

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) {}
    }
}
Code bearbeiten und ausführen