问题标签 [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.
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 作为最小样本的方式(我知道 - 我不打算以阻塞方式使用它..)
java - spring webflux 是否支持 javax bean 验证?
我已经用一些注释我的 bean@NotNull
并@Valid
在@GetMapping
. 但这没有用。
我从其他应用程序中看到的唯一区别是我使用@EnableWebMvc
而不是@EnableWebFlux
.
在控制器中:
在 Application.java 中:
我的豆类:
和 pom.xml:
难道我做错了什么?
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 的屏幕截图:
我没有为静态目录提供我自己的配置,我只想使用默认目录。可能重要的是模板从 /resources/templates/ 目录加载得很好。
Css 文件是这样加载的:
应用程序没有使用普通的 Controller 类,而是我提供了作为 Bean 的函数来定义我的路由器:
有什么想法吗?
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?
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,但在这种情况下,我无法启动我的服务器。
spring - 如何退回 Flux当我的响应用 Spring 5 包装在一个 json 分页对象中时?
我有一个 Web 服务,我正在尝试使用新的 Spring 5 WebClient 来使用它。
工作示例
以及调用的java代码
问题
来自 Web 服务的响应是分页的,因此不像上面的示例那样直接包含项目列表。
看起来像这样
我怎样才能得到子键"data"
作为一个Flux<Order>
?
可能的解决方案,但我不知道这是否是最好的方法......
创建一个包装器类并将包装器转换.data
为通量。
但是现在我们需要立即反序列化整个响应,可能会耗尽内存。
有没有更好的办法?
spring - 使用 spring 5 WebFlux 框架解码 ByteArray
我正在尝试将新的 Spring WebFlux 框架与 kotlin 一起使用。而且我找不到此代码(myService)的错误所在:
此方法返回 7893 字节的 Flux,我知道字节数组服务发送的字节并非全部。如果我使用旧式休息模板一切都可以
它返回从 byte-array-service 发送的所有 274124 个字节
这是我的消费者
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
我试图添加杰克逊依赖项,但似乎这是另一个问题
任何想法都会受到欢迎
spring - 如何在 Postman 中查看 Spring 5 Reactive API 的响应?
我的应用程序中有下一个端点:
目前,我可以在 Postman 中将文本"data:"
视为正文Content-Type →text/event-stream
。据我了解Mono<ServerResponse>
,总是用SSE(Server Sent Event)
. 是否可以在 Postman 客户端中以某种方式查看响应?
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
但到目前为止我还没有工作。
我试过了:
该
/li>application.yml
文件具有:配置一个
/li>Jackson2ObjectMapperBuilder
bean:配置一个
/li>ObjectMapper
bean:
我发现通过使用...注释每个类来使其工作的唯一方法,@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
但这不是我的情况的解决方案。
还有其他选择吗?
这是我文件中的dependencies
“部分” :build.gradle.kts
更新:
这确实是固定的M3
;如果您需要其中SnakeCaseStrategy.SNAKE_CASE
的设置application.yml
就足够了。