2017-12-15 9 views
1

webflux starter과 함께 Spring boot 2.0.0.M7 프로젝트를 만들었습니다. 왜냐하면 모든 비동기 및 비 차단 기능을 사용하기를 원하기 때문입니다. server.servlet.context-path을 추가했지만 웹 스타터를 추가하지 않으면 작동하지 않습니다.WebFlux web and webflux 스타터

둘 다 시작할 때 비 차단 기능에 문제가있을 수 있습니까? Gatling에서 일부 스트레스 테스트를 수행했으며 웹 스타터를 제거하거나 추가 한 것과 동일한 점수를 받았습니다.

어떤 도움이 필요합니까?

답변

0

spring-boot-starter-webspring-boot-starter-webflux을 모두 응용 프로그램에 추가하면 SpringBloot은이를 Spring MVC 응용 프로그램으로 구성합니다.

많은 스프링 MVC가 새로운 WebClient을 MVC 애플리케이션에서 활용할 수 있도록 webflux 의존성을 얻으려고 의도 한 것입니다. 또한 Spring Framework 5에서 Spring MVC는 컨트롤러 레벨에서 Flux로 몇 가지 경우를 처리하는 방법을 알고 있습니다.

당신은 항상이 같은 선택을 강제 할 수

SpringApplication app = new SpringApplication(MyApplication.class); 
app.setWebApplicationType(WebApplicationType.REACTIVE); 
app.run(...); 

를 귀하의 경우에는,이 선택을 강요하는 것이 아니라 WebFlux에서 지원되지 않는 무언가를 사용하는 방법에 대한 없습니다.

server.servlet.context-path 구성 속성은 Servlet에 따라 다르므로 WebFlux에서는 작동하지 않습니다. 현재 Spring Boot는 WebFlux 응용 프로그램을위한 war 배포 또는 다중 웹 컨텍스트를 지원하지 않습니다. 그런 재산을 제공하는 데는 아무런 소용이 없습니다.

"Servlet 기반"과 Spring의 Reactive runtime 사이의 런타임 모델 차이는 매우 미묘 할 수 있으므로 talk that describes those choices을 보시기 바랍니다. 짧은 대답은 : 비동기 타입 (DeferredResult, Flux 또는 SseEmitter)의 Spring MVC를 사용하는 경우 비동기가되지만 읽기 및 쓰기는 여전히 차단됩니다.

벤치마킹은 매우 어렵지만,보고있는 결과는 어떻게 든 예상됩니다. 로컬 서버 + 클라이언트를 실행하고 대기 시간을 고려하지 않고 원시 처리량을 살펴보면 모든 제약 조건은 동시성 비용이있는 반응 모델을 선호해서는 안됩니다. 이 벤치 마크는 비 이상적인 사용 사례의 경우에도 반응성 스택이 이미 최적화되어 있음을 보여줍니다.

+0

감사합니다. Brian이 나를 많이 도왔습니다. –