programing

스프링 부트 앱에서 긴 폴링 REST 엔드포인트를 구현하는 방법은 무엇입니까?

bestprogram 2023. 8. 20. 12:17

스프링 부트 앱에서 긴 폴링 REST 엔드포인트를 구현하는 방법은 무엇입니까?

최신 매뉴얼을 공유하거나 최신 Spring(Spring Boot)을 사용하여 REST Long Polling 끝점을 구현하는 방법을 여기에서 설명해 주시겠습니까?

제가 지금까지 발견한 모든 것은 꽤 오래된 것이고 몇 년 전에 발행된 것입니다.

그래서, 제가 질문을 제기한 것은 롱 폴링이 여전히 좋은 접근법인가요?chess.com 에서 사용되는 것으로 알고 있습니다.

긴 폴링 요청의 경우 다음을 사용할 수 있습니다.DeferredResult반환할 때DeferredResult응답하면 요청 스레드가 비어 있고 작업자 스레드가 요청을 처리합니다.다음은 한 가지 예입니다.

@GetMapping("/test")
DeferredResult<String> test(){
    long timeOutInMilliSec = 100000L;
    String timeOutResp = "Time Out.";
    DeferredResult<String> deferredResult = new DeferredResult<>(timeOutInMilliSec, timeOutResp);
    CompletableFuture.runAsync(()->{
        try {
            //Long polling task; if task is not completed within 100s, timeout response returned for this request
            TimeUnit.SECONDS.sleep(10);
            //set result after completing task to return response to client
            deferredResult.setResult("Task Finished");
        }catch (Exception ex){
        }
    });
    return deferredResult;
}

이 요청은 10초 동안 대기한 후 응답을 제공하는 것을 보여줍니다.설정하는 경우sleep(100)시간 초과 응답이 표시됩니다.

더 많은 옵션을 보려면 이 항목을 확인하십시오.

언급URL : https://stackoverflow.com/questions/53697785/how-to-implement-long-polling-rest-endpoint-in-spring-boot-app