spring - 让 HTTP 端点返回 Flux/Mono 实例而不是 DTO 的好处

标签 spring netty reactive-programming spring-webflux project-reactor

我看过 Spring Tips: Functional Reactive Endpoints with Spring Framework 5.0并阅读了一些关于 Spring react 器的信息,但我不太明白。

鉴于我有 netty 和 Spring react 堆活跃?我最初假设响应式流在 http 请求/响应上下文中的工作方式更像 websockets,其中服务器通过开放 channel 将数据推送到接收器,但情况似乎并非如此。

另外,netty 在响应式编程中实际上在哪些方面比 tomcat 做得更好?

如果这些问题看起来很愚蠢,我很抱歉,但我不太了解这个新框架方向的目的。为什么会出现,它是如何工作的,它解决了什么问题?

最佳答案

我强烈建议您观看最近在比利时 Devoxx 上发布的 "Reactive Web Application with Spring 5" by Rossen Stoyanchev .

在那里,他谈到了 Reactive Web Controller(如下所示)表面上看起来像 Spring MVC HTTP Servlet 请求/响应 Controller ,但实际上并非如此 p>

@GetMapping("/users/{id}")
public Mono<User> getUser(@PathValiable Long id) {
   return this.userRepository.findById(id);
}

@GetMapping("/users")
public Flux<User> getUsers() {
   return this.userRepository.findAll();
}

他谈到了 Servlet 3.1 虽然非阻塞对于完全响应式(Reactive)并不真正起作用,以及连接 Servlet 3.1 和响应式(Reactive)流的胶水代码是如何作为 Spring 5 更改的一部分实现的Servlet 3.1 兼容的 Web 容器(Jetty 和 Tomcat)。

当然,他正在接触完全响应式非阻塞兼容服务器(Netty、Undertow)来运行响应式流。

关于spring - 让 HTTP 端点返回 Flux/Mono 实例而不是 DTO 的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40964700/

相关文章:

java - 将 Spring Batch 导出到 JAR 时如何外部化 XML 文件

java - 背景 : url(images/2. png)在 style.css 中不起作用

java - 在 java.util.Properties$LineReader.readLine(Properties.java :418) for Spring Security) 处获取问题 java.lang.NullPointerException

c# - 使用 Reactive Extensions (RX),是否可以添加 "Pause"命令?

java - 在 RxJava 中使用 onErrorReturn 和 retryWhen

spring - 如何在 Spring Rest 中记录所有请求响应?

sockets - Netty并发和 "Connection reset by peer"

playframework - Netty 的长期本地监控

java - 使用netty解析XML字符串

ios - RxSwift - 在 X 秒内未收到元素后发出