LoslegenKostenlos starten

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

<Kurs>Codeoptimierung in Java</Kurs>
Kurs ansehen

Übungsanweisungen

  • 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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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