비동기 데이터 처리 파이프라인 구현하기
분석 대시보드를 만들고 있는데, 서로 다른 서비스에서 사용자 데이터와 활동 로그를 가져온 뒤 이를 처리해 사용자 요약 정보를 만들어야 합니다. 애플리케이션의 응답성을 유지하기 위해 이 작업은 비동기로 수행되어야 합니다. 이를 CompletableFuture를 사용해 구현해 보세요.
UserData와 UserSummary 클래스는 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
Java 코드 최적화
연습 안내
CompletableFuture에 사용자 데이터 가져오기를 추가하세요.CompletableFuture에 사용자 데이터 처리를 추가하세요.CompletableFuture에 예외 처리를 추가하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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) {}
}
}