问题标签 [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.

0 投票
1 回答
630 浏览

java - Spring Boot webflux 应用程序不会启动 IllegalStateException

这是我的build.gradle

当我尝试运行应用程序时,java.lang.IllegalStateException: java.lang.NullPointerException
Stacktrace 失败:

项目是通过 start.spring.io 站点生成的。

0 投票
12 回答
88095 浏览

java - Spring Webflux:Webclient:出错时获取正文

我正在使用来自 spring webflux 的 webclient,如下所示:

它运作良好。我现在想处理来自我正在调用的 Web 服务的错​​误(Ex 500 内部错误)。通常我会在“流”上添加一个 doOnError 并使用 Throwable 来测试状态代码,

但我的问题是我想获取 web 服务提供的正文,因为它为我提供了我想使用的消息。

无论发生什么,我都希望执行 flatMap 并测试自己的状态代码以反序列化或不反序列化主体。

0 投票
2 回答
8447 浏览

spring-webflux - 如何验证/测试 WebClient 的使用情况

我需要对一个使用WebClient. 有什么好的方法来处理 WebClient 吗?有了RestTemplate我可以轻松使用 Mockito。模拟 WebClient 有点乏味,因为深度存根不适用于 webclient...

我想测试我的代码是否提供了正确的标题...缩短的示例代码:

0 投票
1 回答
1879 浏览

spring-boot - Spring Boot + Kotlin 注释错误

我有一个2.0.0.M2用 Kotlin 编写的 Spring Boot(带有 WebFlux)应用程序。

我习惯于为测试用例定义/声明“注释”,以避免一些样板配置;就像是:

...然后在我的测试中,我像这样使用它:

问题是我无法使用 Kotlin 提供的注释来达到同样的效果:

我得到一个this annotation is not applicable to target 'class'内部PersonWorkflowTest。如果我使用 Java,一切都很好,但另一方面,我会收到这些警告——我真正想要摆脱的 :)

Spring Boot 的 Kotlin Annotation(s) 错误

0 投票
1 回答
15770 浏览

spring-boot - 如何将 Java Flux 列表从外部源合并为一个列表

在 spring-boot 2.0 休息控制器中,我创建了以下代码,可以按需要工作:

我的问题来自尝试从外部数据源做同样的事情。我创建了以下测试用例:

其中 myRepository 如下:

我标记为 test4 的代码给了我代码提示错误:

类型不匹配:无法从 Flux< List < String >> 转换为 Publisher < ? 扩展发布者 < ? 扩展对象>>

所以有几个问题:

  1. 我以为 Flux 是出版商?那么为什么会出错呢?
  2. 我在测试 4 中做错了什么,以至于它会输出与 test3 中相同的结果?

预期的输出是:[["one","two","three","four","five","six"]]

0 投票
2 回答
4534 浏览

java - 如何在 Spring Boot 2.0.0.M2 的 @Bean 方法中注册 RouterFunction?

我正在玩 Spring 5 的功能,但在注册时遇到了一些问题RouterFunction,它会被读取,但不会被映射。(通过在方法中抛出异常来尝试。)

/routes/asd导致 404,关于我做错了什么的任何线索?(我也试过没有这个@RequestMapping/routes它也返回 404 /asd

0 投票
0 回答
947 浏览

spring-webflux - 如何在 Spring Webflux 中设计过滤器/拦截器?

在将我的项目从 Spring MVC 架构迁移到 Webflux 框架时,我遇到了一些困惑。我想了解适用于 WebFlux 的用于在 MVC 中执行授权/表单验证的配置的相应等效项(如果有)或替代方案是什么?

0 投票
1 回答
3705 浏览

junit - 使用 WebTestClient 和 ControllerAdvice 对 spring 控制器进行单元测试

我正在尝试对我的控制器进行单元测试,具体情况是:我的服务返回一个 Mono.Empty,我抛出一个 NotFoundException 并且我不想确保我得到一个 404 异常

这是我的控制器:

这是我的控制器建议:

和我的测试:

我收到 NotFoundException 但 500 错误不是 404,这意味着我的建议尚未被调用

堆栈跟踪 :

任何想法 ?

0 投票
1 回答
10632 浏览

spring - 反应式 WebClient 未发出响应

我有一个关于 Spring Reactive WebClient 的问题......几天前,我决定使用 Spring Framework 中的新反应式东西,我做了一个小项目,仅出于个人目的抓取数据。(向一个网页发出多个请求并组合结果)。

我开始使用新的响应式 WebClient 发出请求,但我发现的问题是客户端没有为每个请求发出响应。听起来很奇怪。这是我为获取数据所做的:

以及调用的函数fetchData

和订户:

问题是,如果我提出了更多 > 100 的请求。我没有得到所有请求的响应,不会引发错误或返回错误响应代码,并且调用的 subscribe 方法的大小与请求数不同。

我提出的请求基于字符串列表(url),在发出所有响应后,我应该将所有响应作为列表接收,因为我使用的是collectList(). 当我执行 100 个请求时,我希望收到 100 个响应的列表,但实际上我有时会收到 100 个,有时会收到 96 个等……可能是某些事情默默地失败了。这很容易重现,这是我的 github 项目链接

样本输出:

请给我建议如何调试或我做错了什么。帮助表示赞赏。

更新:

日志显示我是否传递了 126 个 url,例如:

但是如何在不调用 onNext() 或 onError() 的情况下完成一些请求?(Mono 中的成功与错误)

我认为问题不在于 WebClient,而在于其他地方。环境或服务器阻止了请求,但可能我应该收到一些错误日志。

附言。谢谢您的帮助 !

0 投票
2 回答
4698 浏览

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 个),并且值是空的,他正在完成之后。