问题标签 [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 投票
0 回答
3407 浏览

spring - WebClient 未发出响应

我最近遇到了一个让我感到困惑的问题。我很高兴你能给出的每一个建议,即使它是关于如何获得更多的见解(即日志记录)。

我正在使用 spring boot 2.0.0M1(从 start.spring.io 生成)和响应式(netty backed)org.springframework.web.reactive.function.client.WebClient

当调用一个只返回一个 JSON 对象的旧的、非响应式的服务时,WebClient 不会发出任何事件,即使被调用的服务是完全响应的(比较日志)。

2017-05-29 17:33:30,016 | reactor-http-nio-2 | INFO | | onSubscribe([Fuseable] FluxOnAssembly.OnAssemblySubscriber) | myLogClass:145 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | INFO | | request(unbounded) | myLogClass:145 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | DEBUG | | onSubscribe([Fuseable] FluxOnAssembly.OnAssemblySubscriber) | client:125 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | DEBUG | | request(unbounded) | client:125 |

在调试这个问题时,我发现了一些奇怪的东西,这让我认为我只是以错误的方式使用了这个实现:我在 nettys 池/通道处理中看到了另一个服务(我之前调用过)的 URL(将添加类后来找到了)。

其他观察:

  • 当我将其他 WebClient 调用排除在图片之外时,有问题的调用有效
  • 被调用的服务位于网关后面,因此它们(可能)具有相同的 IP 但不同的 URI

所以到目前为止我看似不太可能的想法:

  • netty 频道/池处理以某种方式搞砸了我的网址
  • WebClient 不应与不同的 URI 一起使用
  • 在从 netty 回到订阅者的路上,有一个带有 URI/IP 映射的 f'up

正如我在开头所说的:我感谢每一个帮助,当然我会添加你要求的任何信息来重现这个虫子。任何关于如何为此编写测试的指针也是受欢迎的!

从信息开始:​​这就是我使用 WebClient 作为最小样本的方式(我知道 - 我不打算以阻塞方式使用它..)

0 投票
1 回答
2279 浏览

java - spring webflux 是否支持 javax bean 验证?

我已经用一些注释我的 bean@NotNull@Valid@GetMapping. 但这没有用。

我从其他应用程序中看到的唯一区别是我使用@EnableWebMvc而不是@EnableWebFlux.

在控制器中:

在 Application.java 中:

我的豆类:

和 pom.xml:

难道我做错了什么?

0 投票
1 回答
1666 浏览

spring - Spring Web Flux 无法解析静态内容的路径

我正在使用带有 WebFlux 的 Spring Boot 2.0.0 M1 来构建我的示例 Web 应用程序。在 REST 端点成功后,我决定向我的应用程序添加一些视图。我决定使用 Thymeleaf 3.x 版本。我知道 Spring 从 4 个默认位置提供静态内容:

  • /META-INF/资源/
  • /资源/
  • /静止的/
  • /上市/

我决定使用第二个示例,因此我的 css 文件位于 /resources/static/css/ 中。但是,在加载我的页面后,找不到 .css 文件。这是我的 IDE 的屏幕截图: IDE视图

我没有为静态目录提供我自己的配置,我只想使用默认目录。可能重要的是模板从 /resources/templates/ 目录加载得很好。

Css 文件是这样加载的:

应用程序没有使用普通的 Controller 类,而是我提供了作为 Bean 的函数来定义我的路由器:

有什么想法吗?

0 投票
2 回答
1382 浏览

angular - 如何在路由器功能中允许 CORS?

我正在使用 Spring 5 路由器功能构建一个 Web 应用程序休息控制器来映射请求。

让 Angular 4 项目充当剩余控制器的消费者。

返回此错误

XMLHttpRequest 无法加载http://ip:port/admin/organizations。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:3000 ”。响应的 HTTP 状态代码为 500。}

如何在 Spring 5 路由器功能中允许 CORS?

0 投票
1 回答
1321 浏览

maven - 使用“spring-boot-starter-parent”时如何在 Maven 中使用较低的 Elastic 搜索版本

我正在为 Webflux 使用版本为“2.0.0.BUILD-SNAPSHOT”的“spring-boot-starter-parent”。我使用 Elasticsearch 作为数据源。所以我在 pom.xml 中包含了“spring-boot-starter-data-elasticsearch”。默认情况下,包括 5.4.0 的 ES 版本。但我的 Elasticsearch 版本是 2.3.1。我现在无法升级我的 ES 版本。那么有没有办法将默认包含的 ES 版本(5.4.0)降级到较低版本(2.3.1)。我尝试在 pom.xml 的“spring-boot-starter-data-elasticsearch”依赖项中指定较低版本,但仍然无法正常工作。我收到“NoNodeAvailalbe 异常”。所以我通过使用版本 2.3.1 的依赖项“org.elasticsearch”来降级 ES,但在这种情况下,我无法启动我的服务器。

0 投票
0 回答
2245 浏览

spring - 如何退回 Flux当我的响应用 Spring 5 包装在一个 json 分页对象中时?

我有一个 Web 服务,我正在尝试使用新的 Spring 5 WebClient 来使用它。

工作示例

以及调用的java代码

问题

来自 Web 服务的响应是分页的,因此不像上面的示例那样直接包含项目列表。

看起来像这样

我怎样才能得到子键"data"作为一个Flux<Order>

可能的解决方案,但我不知道这是否是最好的方法......

创建一个包装器类并将包装器转换.data为通量。

但是现在我们需要立即反序列化整个响应,可能会耗尽内存。

有没有更好的办法?

0 投票
1 回答
3426 浏览

spring - 使用 spring 5 WebFlux 框架解码 ByteArray

我正在尝试将新的 Spring WebFlux 框架与 kotlin 一起使用。而且我找不到此代码(myService)的错误所在:

此方法返回 7893 字节的 Flux,我知道字节数组服务发送的字节并非全部。如果我使用旧式休息模板一切都可以

它返回从 byte-array-service 发送的所有 274124 个字节

这是我的消费者

0 投票
2 回答
2342 浏览

spring - Spring响应式休息服务返回ServerResponse对象

我在尝试从反应式休息服务返回 ServerResponse 对象时遇到问题

我越来越

javax.servlet.ServletException: org.springframework.web.util.NestedServletException: 请求处理失败;嵌套异常是 java.lang.IllegalArgumentException: No converter found for return value of type: class org.springframework.web.reactive.function.server.DefaultEntityResponseBuilder$DefaultEntityResponse

这是我的 pom.xml

我试图添加杰克逊依赖项,但似乎这是另一个问题

任何想法都会受到欢迎

0 投票
1 回答
7959 浏览

spring - 如何在 Postman 中查看 Spring 5 Reactive API 的响应?

我的应用程序中有下一个端点:

目前,我可以在 Postman 中将文本"data:"视为正文Content-Type →text/event-stream。据我了解Mono<ServerResponse>,总是用SSE(Server Sent Event). 是否可以在 Postman 客户端中以某种方式查看响应?

0 投票
1 回答
5606 浏览

java - 将 Jackson 配置为在 Spring Boot 2.0.0.M1 中“全局”使用 SNAKE_CASE

我正在使用 Spring Boot 2.0.0.M1(因此 Spring 5.0.0.RC1)。我正在尝试对其进行配置以使用,PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE但到目前为止我还没有工作。

我试过了:

  1. application.yml文件具有:

    /li>
  2. 配置一个Jackson2ObjectMapperBuilderbean:

    /li>
  3. 配置一个ObjectMapperbean:

    /li>

我发现通过使用...注释每个类来使其工作的唯一方法,@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)但这不是我的情况的解决方案。

还有其他选择吗?


这是我文件中的dependencies“部分” :build.gradle.kts

更新:

这确实是固定的M3;如果您需要其中SnakeCaseStrategy.SNAKE_CASE的设置application.yml就足够了。