Comece agoraComece grátis

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

Ver curso

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) {}
    }
}
Editar e Executar Código