问题标签 [spring-webflux]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring WebFlux 和 Reactor 的线程模型
目前正在使用Spring 5.0.0.RC2、Reactor 3.1.0.M2和Spring Boot 2.0.0.M2试验反应式编程。
想知道WebFlux 和 Reactor 用于正确编码应用程序和处理可变状态的并发和线程模型。
Reactor 文档指出该库被认为与并发无关,并提到了调度程序抽象。WebFlux 文档没有提供信息。
然而,当通过 Spring Boot 使用 WebFlux 时,定义了一个线程模型。
从我的实验中,我得到了:
- 该模型既不是 1 个事件线程,也不是 1 个事件线程 + 工作者
- 使用了几个线程池
- “ reactor-http-nio-3 ”线程:可能每个核心一个,处理传入的 HTTP 请求
- “ Thread-7 ”线程:由对 MongoDB 或 HTTP 资源的异步请求使用
- “ parallel-1 ”线程:每个内核一个,由 Reactor 中的 Schedulers.parallel() 创建,由延迟运算符等使用
- 共享可变状态必须由应用程序同步
- ThreadLocal(用于应用程序状态、MDC 日志记录等)不是请求范围的,所以不是很有趣
它是否正确 ?WebFlux 的并发和线程模型是什么:例如默认的线程池是什么?
感谢您的信息
java - 如何使用 Spring 5 Reactive WebSocket 检测断开连接的客户端
我设法WebSocketHandler
使用 Spring 5 Reactive WebSocket 支持(第 23.2.4 章)创建了一个。接收和发送一切正常。但是,我不知道如何检测客户端断开连接。HttpServerWSOperations
当调试客户端断开连接时,它会在类(包)中的服务器端停止,在netty.http.server
那里它确实检测到CloseWebSocketFrame
.
任何建议如何处理客户端断开连接?
spring - 带有 Spring WebFlux 安全性的 ClassNotFoundException
我遇到以下问题:
我正在尝试设置一个包含 Spring Webflux 和 Spring Security 的基本 Spring Boot (2.0.0.M2) 项目。
我的 pom.xml 看起来像这样(通过 start.spring.io 生成):
弹簧安全配置:
我没有进一步了解,因为我在启动时遇到异常:
所以我认为整个org.springframework.security.web.server
包不在类路径上,尽管它应该在那里,因为它包含在API 文档中。
好像我做错了什么,但我不知道是什么。
java - Spring 5 WebClient NIO 特性和问题域,使用 Spring Webflux
我正在使用最新版本的 Spring - Spring 5。
我正在开发http客户端的WebService“聚合器”,类似于将请求路由到外部WebServices,接收响应接收响应,进行一些数据操作并回复给我的HTTP服务的客户端。
为了在我的应用程序中创建 http 客户端,我基本上使用可用于构建反应式应用程序的新 WebClient。
我的代码遵循以下风格:
稍后,我会在自己的 HTTP API 中公开此调用的结果,为简单起见,我不会在此处发布。
作为这个应用程序的一部分,我使用 Netty 作为嵌入式 HTTP 层为我的应用程序的客户端提供服务。(当我在 Spring Boot Starter 中选择Spring Webflux时,它也是默认的)。
我的用例不一定是响应式应用程序,我不需要执行任何流式处理或背压逻辑。
但是,我的理解是,使用 Netty,我可以以非阻塞方式对外部 HTTP 服务进行所有请求,这对我的用例很有用。
问题是:
1. 关于 NIO 功能是否正确,我可能从中受益?
2. 如果正在使用 Spring 5 的这个 WebClient 接口,我会失去一些东西,或者在我的用例中获得一些东西,因为我没有做反应性的东西吗?
3. 应该org.springframework.web.reactive.function.client.WebClient
满足我的要求吗?
4. WebClient 是构建功能管道的好选择吗?我问是因为我打算获取一次调用的结果,然后进行后续调用,并且我打算使用CompletableFutures,我在 WebClient API 中看到了它?
java - Spring Webflux,如何转发到 index.html 以提供静态内容
spring-boot-starter-webflux
(Spring Boot v2.0.0.M2) 已经配置spring-boot-starter-web
为在资源中的静态文件夹中提供静态内容。但它不会转发到 index.html。在 Spring MVC 中,可以这样配置:
如何在 Spring Webflux 中做到这一点?
java - 无法绑定到 Mono通过@PathVariable?
我正在使用 spring boot 2.0.0.M2 遵循 Simon Basle 的“Reactor by Example”中的代码。它就像一个魅力。但是,当我尝试将路径变量绑定到 Mono 并发送请求http://localhost:8080/monohello/Hero时,它的响应如下:
{“时间戳”:1500534277626,“状态”:500,“错误”:“内部服务器错误”,“消息”:“无法将类型'java.lang.String'的值转换为所需类型'reactor.core.publisher .Mono';嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“reactor.core.publisher.Mono”:找不到匹配的编辑器或转换策略”、“路径” : "/monohello/英雄" }
下面是控制器:
spring - WebExceptionHandler : 如何使用 Spring Webflux 编写正文
我想通过添加 WebExceptionHandler 来处理我的 api 异常。我可以更改状态代码,但是当我想更改响应的主体时我被卡住了:例如添加异常消息或自定义对象。
有人有例子吗?
我如何添加我的 WebExceptionHandler :
spring - Spring Data REST 是否支持响应式 crud 存储库?
我有非常简单和标准的 OrderRepository:
使用以下命令访问服务器后:
我收到以下回复:
spring-boot - 如何在 Spring WebFlux 中记录请求和响应主体
我想在带有 Kotlin 的 Spring WebFlux 上的 REST API 中集中记录请求和响应。到目前为止,我已经尝试过这种方法
这里请求方法和路径日志成功但正文是Mono
,那我应该如何记录呢?是否应该反过来,我必须订阅请求正文Mono
并将其记录在回调中?另一个问题是ServerResponse
这里的接口无法访问响应正文。我怎么能在这里得到它?
我尝试过的另一种方法是使用WebFilter
同样的问题:请求正文是Flux
,没有响应正文。
有没有办法访问来自某些过滤器的日志记录的完整请求和响应?我不明白什么?
spring-boot - 异步弹簧安全 WebFilter
如何使用 SecurityContextHolder 摆脱 WebFilter 中的阻塞。我试图将身份验证设置放在 Mono 的 doOnSuccess(...) 和 thenEmpty(...) 中,但它从未被调用过。