IniziaInizia gratis

Implementare una pipeline asincrona di elaborazione dati

Stai costruendo una dashboard di analytics che deve recuperare i dati utente e i log delle attività da servizi separati, quindi elaborarli per creare un riepilogo utente. Questa operazione deve essere eseguita in modo asincrono per mantenere l'applicazione reattiva. Il tuo compito è implementarla usando CompletableFuture.

Le classi UserData e UserSummary sono già state caricate per te.

Questo esercizio fa parte del corso

Ottimizzazione del codice in Java

Visualizza il corso

Istruzioni dell'esercizio

  • Aggiungi il recupero dei dati utente nel CompletableFuture.
  • Aggiungi l'elaborazione dei dati utente nel CompletableFuture.
  • Aggiungi la gestione delle eccezioni nel CompletableFuture.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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) {}
    }
}
Modifica ed esegui il codice