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
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) {}
}
}