首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebFlux web和webflux starter

WebFlux web和webflux starter
EN

Stack Overflow用户
提问于 2017-12-15 22:45:44
回答 1查看 1.2K关注 0票数 1

我使用webflux starter创建了一个Spring boot 2.0.0.M7项目,因为我想使用所有的异步和非阻塞功能。我添加了server.servlet.context-path,但如果我不添加web starter,它就不起作用。

如果我同时添加两个启动器,我的非阻塞功能会出现问题吗?我使用Gatling执行了一些压力测试,我收到了相同的分数,删除或添加了web starter。

对此有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-15 23:57:27

如果您在应用程序中同时添加了spring-boot-starter-webspring-boot-starter-webflux,Spring Boot会将其配置为Spring MVC应用程序。

这是有意的,因为许多Spring MVC将获得webflux依赖,以便在他们的MVC应用程序中利用新的WebClient。此外,从Spring Framework5开始,Spring MVC知道如何在控制器级使用Flux处理一些情况。

你可以像这样强制你的选择:

代码语言:javascript
复制
SpringApplication app = new SpringApplication(MyApplication.class);
app.setWebApplicationType(WebApplicationType.REACTIVE);
app.run(...);

在您的例子中,这不是强制选择,而是使用WebFlux不支持的东西。

Servlet配置属性是特定于server.servlet.context-path的,因此它不适用于WebFlux。目前,Spring Boot不支持war部署,也不支持WebFlux应用程序的多web上下文。因此,提供这样的房产是没有意义的。

“基于Servlet”和使用Spring的响应式运行时之间的运行时模型差异可能非常微妙,我建议您查看talk that describes those choices。简短的答案是:如果你使用带有异步类型(DeferredResultFluxSseEmitter)的Spring MVC,事情将是异步的,但读和写仍然是阻塞的。

正确的基准测试是相当困难的,但您看到的结果在某种程度上是意料之中的。在本地运行server+client,不涉及延迟,查看原始吞吐量-所有这些限制都不应该有利于具有并发成本的反应式模型。如果说有什么不同的话,那就是这个基准测试表明反应式堆栈已经相当优化了,即使对于不理想的用例也是如此!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47834681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档