Aan de slagGa gratis aan de slag

Een asynchrone gegevensverwerkingspijplijn implementeren

Je bouwt een analytics-dashboard dat gebruikersgegevens en activiteitslogboeken uit aparte services moet ophalen en die vervolgens moet verwerken tot een gebruikerssamenvatting. Deze bewerking moet asynchroon worden uitgevoerd om je applicatie responsief te houden. Jij krijgt de taak dit te implementeren met CompletableFuture.

De klassen UserData en UserSummary zijn alvast voor je geladen.

Deze oefening maakt deel uit van de cursus

Code optimaliseren in Java

Cursus bekijken

Oefeninstructies

  • Voeg het ophalen van gebruikersgegevens toe in de CompletableFuture.
  • Voeg het verwerken van gebruikersgegevens toe in de CompletableFuture.
  • Voeg foutafhandeling toe in de CompletableFuture.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 bewerken en uitvoeren