deferredresult 예제

웹 응용 프로그램은 스프링 부팅으로 빌드됩니다. 예제를 실행 하기 위해 다음 클래스를 실행 합니다: 여기에 설명 된 모든 예제는 장기 실행 작업을 실행 하는 컨트롤러를 구현 하 고 다음 클라이언트에 결과 반환에 구성 됩니다. 장기 실행 작업은 TaskService에서 처리됩니다. 이 예제에서 수행한 작업은 CompletableFuture를 사용하여 비동기 작업을 만드는 것입니다. 이렇게 하면 장기 실행 작업이 실행되는 새 스레드가 생성됩니다. 결과를 설정하는 이 스레드에 있습니다. 추가 인터페이스를 구현하기 위해 클래스를 확장하여 이 클래스에 추가 동작을 연결하는 예제를 실현할 수 있습니다. 예를 들어, PriorityQueue에 이연된Result가 추가될 때 올바른 순서로 처리되도록 비교를 구현할 수 있습니다. 이러한 기존 접근 방식을 사용하면 요청이 처리될 때까지 요청 스레드가 차단됩니다. 위의 예에서 요청 스레드는 4000밀리초 동안 차단되며, 이 기간 동안 스레드는 상태를 기다리고 있으며 새 HTTP 요청을 처리하고 서버에 처리할 수 없습니다. 이 예제에서는 결과를 직접 반환하는 대신 Callable: 이러한 예제가 있는 소스 코드는 Github Spring-Rest 리포지토리에서 찾을 수 있습니다. http://localhost:8080/block 이 예제를 실행하여 로그를 살펴보면 긴 실행 작업이 처리될 때까지 서벨렛 요청이 해제되지 않은 것을 볼 수 있습니다(5초 후): 이 예제에서는 Spring Boot 응용 프로그램을 사용합니다. 응용 프로그램을 부트스트랩하는 방법에 대한 자세한 내용은 이전 문서를 참조하십시오.

이 기사에서 우리는 이연자라는 미래 / 약속 추상화의 또 다른 화신에 익숙해. 일부 비동기 작업이 완료될 때까지 HTTP 요청 처리를 연기하는 데 사용됩니다. 따라서 이연 결과는 이벤트 기반 시스템, 메시지 브로커 등을 기반으로 구축 된 웹 GUI에 적합합니다. 그것은 원시 서볼릿만큼 강력하지 않습니다 3.0 API 하지만. 예를 들어 장기 실행 HTTP 연결에서 여러 이벤트(예: 새 트윗)를 스트리밍할 수 없습니다. 하위 클래스는 이 클래스를 확장하여 추가 데이터 또는 동작을 이연동Result와 쉽게 연결할 수 있습니다. 예를 들어 클래스를 확장하고 사용자에 대한 추가 속성을 추가하여 이연결과를 만드는 데 사용된 사용자를 연결할 수 있습니다. 이러한 방식으로 나중에 매핑을 수행 하기 위해 데이터 구조를 사용 하지 않고도 쉽게 액세스할 수 있습니다. 일반적으로 컨트롤러 처리기 메서드 요청 처리가 완료 됩니다.

웹 응용 프로그램은 스프링 부팅으로 빌드됩니다. 예제를 실행 하기 위해 다음 클래스를 실행 합니다: 여기에 설명 된 모든 예제는 장기 실행 작업을 실행 하는 컨트롤러를 구현 하 고 다음 클라이언트에 결과 반환에 구성 됩니다. 장기 실행 작업은 TaskService에서 처리됩니다. 이 예제에서 수행한 작업은 CompletableFuture를 사용하여 비동기 작업을 만드는 것입니다. 이렇게 하면 장기 실행 작업이 실행되는 […] , 2019