ÎncepețiÎncepe gratuit

Implementarea unui pipeline asincron de procesare a datelor

Construiești un dashboard de analiză care trebuie să preia datele utilizatorilor și jurnalele de activitate din servicii separate, apoi să le proceseze pentru a genera un rezumat al utilizatorului. Această operațiune ar trebui realizată asincron, pentru ca aplicația ta să rămână responsivă. Sarcina ta este să implementezi acest lucru folosind CompletableFuture.

Clasele UserData și UserSummary au fost preîncărcate pentru tine.

Acest exercițiu face parte din cursul

Optimizarea codului în Java

Vezi cursul

Instrucțiuni pentru exercițiu

  • Adaugă preluarea datelor utilizatorului în CompletableFuture.
  • Adaugă procesarea datelor utilizatorului în CompletableFuture.
  • Adaugă gestionarea excepțiilor în CompletableFuture.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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) {}
    }
}
Editează și rulează codul