如何在没有Reactive东西的情况下使用Spring Cloud Gateway?

问题描述 投票:0回答:3

我想使用 Spring Cloud Gateway 创建一个新项目,但我不想要所有反应式功能。对我来说,如果其他微服务会阻塞 I/O 而不是 Reactive,那就没问题了。

  1. 我该怎么做?
  2. 假设我将云网关实现为响应式,而所有其他 MS 实现为阻塞式,这是一个好方法吗?这样做有什么缺点?
spring spring-webflux reactive spring-cloud-gateway
3个回答
3
投票

Spring Cloud Gateway 构建在 Spring Webflux 和 Netty 之上,这是无法更改的。

来自 Spring Cloud 参考文档

Spring Cloud Gateway 构建于 Spring Boot 2.x、Spring WebFlux 和 项目反应堆。因此,许多熟悉的同步 库(例如 Spring Data 和 Spring Security)和模式 您知道当您使用 Spring Cloud Gateway 时可能不适用。如果你是 如果不熟悉这些项目,我们建议您首先阅读他们的 帮助您熟悉一些新概念的文档 在使用 Spring Cloud Gateway 之前。

Spring Cloud Gateway需要Spring提供的Netty运行时 引导和 Spring Webflux。它在传统的 Servlet 中不起作用 容器或作为 WAR 构建时。

非阻塞 IO 应用程序对阻塞 IO 应用程序进行网络调用是完全可以接受的。非阻塞 IO 应用程序仍将具有非阻塞 IO 的所有优点。在等待网络调用对阻塞 IO 应用程序的响应时,它不会消耗资源,理论上应该消耗更少的资源,从而能够处理更多的并发调用。


0
投票

你无法改变网关的反应性质,但控制的是这个。

创建 2 个启动应用程序,一个是反应式网关,另一个是带有 Web 的普通 Spring 启动。在网关上注册您的路由。您可以将网关设置为第一层,并且所有 API 都从其他启动项目的非反应式 Web 应用程序托管。


-2
投票

添加此:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后设置:

spring.main.web-application-type=reactive

在应用程序属性中

© www.soinside.com 2019 - 2024. All rights reserved.