我希望在一个项目中同时使用2种方法(响应式和标准)。
我试图将一个REST API端点迁移到响应式WebFlux,并在迁移其余端点之前测试性能。 但是它没有起作用。我为其添加了路由器和处理程序,但直到我从依赖项中删除 spring-boot-starter-web
并禁用@RestController
,我一直会得到 http 404
状态码。这是否可能?或者我应该将整个项目迁移到响应式方法?
我希望在一个项目中同时使用2种方法(响应式和标准)。
我试图将一个REST API端点迁移到响应式WebFlux,并在迁移其余端点之前测试性能。 但是它没有起作用。我为其添加了路由器和处理程序,但直到我从依赖项中删除 spring-boot-starter-web
并禁用@RestController
,我一直会得到 http 404
状态码。这是否可能?或者我应该将整个项目迁移到响应式方法?
根据您想要实现的目标,可能有几种方法可以处理此问题。
如果您想使用WebClient
来优化多个并发远程HTTP调用并使用Reactor操作符,则可以继续使用Spring MVC注释控制器并返回反应类型作为返回值(更多信息请参见此Spring Boot讲座)。
如果您想要纯粹的可扩展性和延迟(因此不一定是原始吞吐量),那么您可以开始使用spring-boot-starter-webflux
并从那里开始工作。请注意,使用阻塞API(例如阻塞数据库调用)是被禁止的,并且用Flux
或Mono
包装这些API并将该工作调度到单独的线程池上会对性能产生负面影响。
最后,如果您想使用Spring WebFlux提供的函数式方法,那么它并不一定表现更好。这实际上取决于您的用例以及您如何实现它。