Async REST Processing
NORMAL, SYNCHRONOUS, CONTROLLER METHODS mein, EK REQUEST-HANDLING THREAD, TAB TAK, "BLOCKED" REHTA hai, JAB TAK, RESPONSE, READY NA ho — LONG-RUNNING OPERATIONS (jaise, EXTERNAL API CALLS) mein, YE, THREAD POOL ko, EXHAUST kar sakta hai.
DeferredResult<T> YA CompletableFuture<T>, RETURN karके, CONTROLLER METHOD, IMMEDIATELY, RETURN ho jaata hai — REQUEST-HANDLING THREAD, FREE ho jaata hai (DUSRI REQUESTS HANDLE karne ke liye), aur, JAB, ACTUAL RESULT, READY HOTA hai (SEPARATE THREAD/ASYNC OPERATION SE), RESPONSE, CLIENT ko, BHEJA jaata hai.
@GetMapping("/{id}/report")
public CompletableFuture<ReportDto> generateReport(@PathVariable Long id) {
return CompletableFuture.supplyAsync(() -> {
// LONG-RUNNING operation, SEPARATE thread par:
return reportService.generateExpensiveReport(id);
});
// Request-handling thread, IMMEDIATELY, FREE ho jaata hai
}
// DeferredResult — MANUAL control ke liye:
@GetMapping("/{id}/status")
public DeferredResult<StatusDto> getStatus(@PathVariable Long id) {
DeferredResult<StatusDto> result = new DeferredResult<>(5000L); // 5s timeout
asyncStatusService.checkAsync(id, status -> result.setResult(status));
return result;
}- DeferredResult/CompletableFuture = controller, IMMEDIATELY, return ho jaata hai
- Request-handling thread, FREE ho jaata hai — thread pool, EXHAUST NAHI hota
- Throughput IMPROVE hota hai, LATENCY nahi — high-concurrency scenarios ke liye
@Async ANNOTATION (Spring's, TASK, EXECUTION, ABSTRACTION), EK, SIMPLER, ALTERNATIVE hai, MANUAL, CompletableFuture, CODE SE — METHOD ko, @Async, MARK karo, aur, Spring, AUTOMATICALLY, ISE, SEPARATE, THREAD PAR, RUN karta hai.
@Async
public CompletableFuture<Report> generateReportAsync(Long id) {
return CompletableFuture.completedFuture(reportService.generate(id));
}
// @EnableAsync, MAIN CONFIG CLASS PAR, ZAROORI haiAGAR, POORI, APPLICATION, HIGH-CONCURRENCY, NON-BLOCKING, HONI CHAHIYE (NA, SIRF, EK, DO, ENDPOINTS), Spring WebFlux (REACTIVE, PROGRAMMING, MODEL), EK, ZYAADA, COMPREHENSIVE, SOLUTION hai — Mono/Flux, TYPES, POORE, APPLICATION mein, USE HOTE hain, TRADITIONAL, MVC, BLOCKING, CODE ki, JAGAH.