问题标签 [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 Boot webflux 应用程序不会启动 IllegalStateException
这是我的build.gradle
当我尝试运行应用程序时,java.lang.IllegalStateException: java.lang.NullPointerException
Stacktrace 失败:
项目是通过 start.spring.io 站点生成的。
java - Spring Webflux:Webclient:出错时获取正文
我正在使用来自 spring webflux 的 webclient,如下所示:
它运作良好。我现在想处理来自我正在调用的 Web 服务的错误(Ex 500 内部错误)。通常我会在“流”上添加一个 doOnError 并使用 Throwable 来测试状态代码,
但我的问题是我想获取 web 服务提供的正文,因为它为我提供了我想使用的消息。
无论发生什么,我都希望执行 flatMap 并测试自己的状态代码以反序列化或不反序列化主体。
spring-webflux - 如何验证/测试 WebClient 的使用情况
我需要对一个使用WebClient
. 有什么好的方法来处理 WebClient 吗?有了RestTemplate
我可以轻松使用 Mockito。模拟 WebClient 有点乏味,因为深度存根不适用于 webclient...
我想测试我的代码是否提供了正确的标题...缩短的示例代码:
spring-boot - 如何将 Java Flux 列表从外部源合并为一个列表
在 spring-boot 2.0 休息控制器中,我创建了以下代码,可以按需要工作:
我的问题来自尝试从外部数据源做同样的事情。我创建了以下测试用例:
其中 myRepository 如下:
我标记为 test4 的代码给了我代码提示错误:
类型不匹配:无法从 Flux< List < String >> 转换为 Publisher < ? 扩展发布者 < ? 扩展对象>>
所以有几个问题:
- 我以为 Flux 是出版商?那么为什么会出错呢?
- 我在测试 4 中做错了什么,以至于它会输出与 test3 中相同的结果?
预期的输出是:[["one","two","three","four","five","six"]]
java - 如何在 Spring Boot 2.0.0.M2 的 @Bean 方法中注册 RouterFunction?
我正在玩 Spring 5 的功能,但在注册时遇到了一些问题RouterFunction
,它会被读取,但不会被映射。(通过在方法中抛出异常来尝试。)
将/routes/asd
导致 404,关于我做错了什么的任何线索?(我也试过没有这个@RequestMapping
,/routes
它也返回 404 /asd
)
spring-webflux - 如何在 Spring Webflux 中设计过滤器/拦截器?
在将我的项目从 Spring MVC 架构迁移到 Webflux 框架时,我遇到了一些困惑。我想了解适用于 WebFlux 的用于在 MVC 中执行授权/表单验证的配置的相应等效项(如果有)或替代方案是什么?
junit - 使用 WebTestClient 和 ControllerAdvice 对 spring 控制器进行单元测试
我正在尝试对我的控制器进行单元测试,具体情况是:我的服务返回一个 Mono.Empty,我抛出一个 NotFoundException 并且我不想确保我得到一个 404 异常
这是我的控制器:
这是我的控制器建议:
和我的测试:
我收到 NotFoundException 但 500 错误不是 404,这意味着我的建议尚未被调用
堆栈跟踪 :
任何想法 ?
spring - 反应式 WebClient 未发出响应
我有一个关于 Spring Reactive WebClient 的问题......几天前,我决定使用 Spring Framework 中的新反应式东西,我做了一个小项目,仅出于个人目的抓取数据。(向一个网页发出多个请求并组合结果)。
我开始使用新的响应式 WebClient 发出请求,但我发现的问题是客户端没有为每个请求发出响应。听起来很奇怪。这是我为获取数据所做的:
以及调用的函数fetchData
:
和订户:
问题是,如果我提出了更多 > 100 的请求。我没有得到所有请求的响应,不会引发错误或返回错误响应代码,并且调用的 subscribe 方法的大小与请求数不同。
我提出的请求基于字符串列表(url),在发出所有响应后,我应该将所有响应作为列表接收,因为我使用的是collectList()
. 当我执行 100 个请求时,我希望收到 100 个响应的列表,但实际上我有时会收到 100 个,有时会收到 96 个等……可能是某些事情默默地失败了。这很容易重现,这是我的 github 项目链接。
样本输出:
请给我建议如何调试或我做错了什么。帮助表示赞赏。
更新:
日志显示我是否传递了 126 个 url,例如:
但是如何在不调用 onNext() 或 onError() 的情况下完成一些请求?(Mono 中的成功与错误)
我认为问题不在于 WebClient,而在于其他地方。环境或服务器阻止了请求,但可能我应该收到一些错误日志。
附言。谢谢您的帮助 !
spring - Spring Web-Flux:如何根据请求将 Flux 返回给 Web 客户端?
我们正在使用 spring boot 2.0.0.BUILD_SNAPSHOT 和 spring boot webflux 5.0.0,目前我们无法根据请求将通量传输给客户端。
目前我正在从迭代器创建通量:
根据要求,我只是在做:
localhost:8080/all
当我现在在 10 秒后本地调用时,我得到一个503
状态码。当我请求/all
使用时,也与客户端一样WebClient
:
什么都没发生。没有数据被传输。
当我改为执行以下操作时:
和
这是工作。我猜是因为所有数据都已经完成加载并刚刚传输到客户端,因为它通常会在不使用通量的情况下传输数据。
我必须改变什么才能让通量将数据流式传输到请求这些数据的 Web 客户端?
编辑
我在ignite 缓存中有数据。所以我getAllIterator
正在从 ignite 缓存中加载数据:
编辑
flux.complete()
像@Simon Baslé 建议的那样添加:
解决503
了浏览器中的问题。但这并不能解决WebClient
. 仍然没有传输数据。
编辑 3
使用:publishOn
_Schedulers.parallel()
不改变结果。
在这里,我向您发布 WebClient 收到的内容:
所以看起来他得到了一个项目(超过 35.000 个),并且值是空的,他正在完成之后。