การสร้าง Asynchronous Data Processing Pipeline
คุณกำลังสร้าง Analytics Dashboard ที่ต้องดึงข้อมูลผู้ใช้และบันทึกกิจกรรมจากบริการแยกต่างหาก แล้วนำมาประมวลผลเพื่อสร้างสรุปข้อมูลผู้ใช้ การดำเนินการนี้ควรทำแบบ Asynchronous เพื่อให้แอปพลิเคชันตอบสนองได้ตลอดเวลา งานของคุณคือนำไปใช้งานด้วย 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) {}
}
}