스프링 부트 앱에서 긴 폴링 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
'programing' 카테고리의 다른 글
Mac에서 도커를 완전히 제거하는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
Android: .apk를 프로그래밍 방식으로 설치 (0) | 2023.08.20 |
MariaDB(로컬 호스트)에 대한 ODBC 연결 생성 (0) | 2023.08.20 |
파워셸에서 각 개체와 각 개체의 차이 (0) | 2023.08.20 |
sqlplus에서 pl/sql 내에 동적 EXECUTE 출력 표시 (0) | 2023.08.20 |