Asenkron bir veri işleme hattı uygulamak
Ayrı servislerden kullanıcı verilerini ve etkinlik günlüklerini (activity logs) çekip bunları işleyerek bir kullanıcı özeti oluşturman gereken bir analitik pano geliştiriyorsun. Uygulaman tepkisel kalsın diye bu işlemin asenkron yapılması gerekiyor. Bunu CompletableFuture kullanarak uygulamakla görevlendirildin.
UserData ve UserSummary sınıfları senin için önceden yüklendi.
Bu egzersiz, kursun bir parçasıdır
Java'da Kod Optimizasyonu
Egzersiz talimatları
CompletableFutureiçinde kullanıcı verilerini çekmeyi ekle.CompletableFutureiçinde kullanıcı verilerini işlemeyi ekle.CompletableFutureiçinde hata yakalamayı ekle.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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) {}
}
}