ComenzarEmpieza gratis

Implementar una canalización asíncrona de procesamiento de datos

Estás creando un panel de analítica que necesita obtener datos de usuario y registros de actividad desde servicios distintos y luego procesarlos para generar un resumen de usuario. Esta operación debe realizarse de forma asíncrona para mantener tu aplicación ágil. Tu tarea es implementarlo usando CompletableFuture.

Las clases UserData y UserSummary ya están precargadas para ti.

Este ejercicio forma parte del curso

Optimizing Code in Java

Ver curso

Instrucciones del ejercicio

  • Añade la obtención de datos de usuario en el CompletableFuture.
  • Añade el procesamiento de los datos de usuario en el CompletableFuture.
  • Añade la gestión de excepciones en el CompletableFuture.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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) {}
    }
}
Editar y ejecutar código