WebFlux Web和WebFlux启动器 [英] WebFlux web and webflux starter

查看:10
本文介绍了WebFlux Web和WebFlux启动器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

这方面有什么帮助吗?

推荐答案

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

这是有意为之,因为许多Spring MVC都会在其MVC应用程序中使用新的WebClient,从而获得对Webflow的依赖。此外,从Spring Framework5开始,Spring MVC知道如何在控制器级别使用Flux处理少数情况。

您始终可以像这样强制您的选择:

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

在您的情况下,这不是强制选择,而是使用WebFlux不支持的内容。

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

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

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

这篇关于WebFlux Web和WebFlux启动器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆