Implementando um pipeline assíncrono de processamento de dados
Você está criando um painel de analytics que precisa buscar dados de usuário e registros de atividade de serviços separados e depois processá-los para gerar um resumo do usuário. Essa operação deve ser feita de forma assíncrona para manter o aplicativo responsivo. Sua tarefa é implementar isso usando CompletableFuture.
As classes UserData e UserSummary já foram carregadas para você.
Este exercicio faz parte do curso
Otimização de Código em Java
Instruções do exercicio
- Adicione a busca de dados do usuário no
CompletableFuture. - Adicione o processamento dos dados do usuário no
CompletableFuture. - Adicione o tratamento de exceções no
CompletableFuture.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
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) {}
}
}