spring-webflux 相关问题

Spring Framework 5包含一个新的spring-webflux模块。该模块包含对被动HTTP和WebSocket客户端以及被动服务器Web应用程序的支持,包括REST,HTML浏览器和WebSocket样式交互.WebFlux可以在Servlet容器上运行,支持Servlet 3.1非阻塞IO API以及其他异步运行时,如Netty和Undertow。

ClassCastException:保存实体时无法将 Long 转换为 Integer 类

最近越来越 java.lang.ClassCastException: 类 java.lang.Long 无法转换为类 java.lang.Integer (java.lang.Long 和 java.lang.Integer 位于 loader 'bootst... 的 java.base 模块中...

回答 1 投票 0

如何解决 Mono.fromFuture 方法调用不一致的问题?

我正在开发一个运行Webflux(版本5.3)的Spring Boot项目。 在 REST 端点中,两个不同的 AWS DynamoDB 账户有两个异步更新,并通过 Mono.when() 聚合在一起。那个...

回答 1 投票 0

如何对使用 TransactionTemplate.execute 的方法进行单元测试并验证在execute() 中执行的代码

如何对以下代码进行单元测试? 公共 Mono 创建(MyObject myobject) { 返回 Mono.fromCallable(() -> transactionTemplate.execute(status -> { 尝试 {

回答 2 投票 0

混合不同的 Spring 和 Spring Boot 版本

我有一个使用 Spring Boot 2.7.4 的应用程序。我想用最新的 spring boot 3.2.4 替换一些 Web 组件,但我现在无法升级所有依赖项。我可以吗...

回答 1 投票 0

无法解析“Mono”中的“doOnSuccessOrError”方法

我有这个 Spring Gateway 代码,我想将其迁移到最新的 Spring Cloud 3: @成分 公共类 CorrelationIdApiFilter 实现 WebFilter { @覆盖 公共 Mono 过滤器(

回答 1 投票 0

如何在没有Reactive东西的情况下使用Spring Cloud Gateway?

我想使用 Spring Cloud Gateway 创建一个新项目,但我不想要所有反应式功能。对我来说,如果其他微服务阻塞 I/O 而不是响应式的,那就没问题了。 哈...

回答 3 投票 0

Spring WebFlux - 如何从 Handler 类返回 Flux 响应

我想使用 Spring WebFlux 来实现 CRUD 操作,同时编写传统的控制器和新的处理程序路由类。我理解 Mono 是针对 0,1 个项目,Flux 是针对 0 到 n 个项目...

回答 1 投票 0

控制未传递到控制器建议类

我正在使用 Spring Webflux (3.2.2) 和 Spring Graphql(3.2.2) 。我已经实现了一个 WebGraphQlInterceptor 来查找请求标头。如果找不到,我将抛出自定义异常。我有

回答 1 投票 0

用于多服务流媒体的 WebFlux 接收器

我正在尝试制作几个反应式微服务: 制作人之一: @RestController @RequiredArgsConstructor 公共类事件控制器{ 私人最终水槽。Many水槽; @PostM...

回答 1 投票 0

Spring Cloud Gateway 重定向由于自定义状态 302 代码被 200 状态代码覆盖而失败

Spring云网关版本:4.1.0 我正在尝试开发一个全局预过滤器,它拦截传入的登录请求,并使用重定向来重定向到登录页面(如果用户已经登录)...

回答 1 投票 0

在 spring webflux 中,如何更改重试的上下文?

我配置了一个反应器链,我想在失败时重试 - 我可以这样做,但是我无法更改上下文,以便链知道何时重试。 在下面的考试中...

回答 1 投票 0

Spring Boot Redisson 无法读取 clusterServersConfig

这是我用于 Spring WebFlux 项目的 application.yml 雷迪斯: 雷迪森: 配置:| 集群服务器配置: 空闲连接超时:10000 连接超时:${

回答 1 投票 0

刷新不适用于 Azure 应用程序配置 Spring Boot 2.6.6

您好,当我使用以下配置将其与我的 spring webflux 项目集成时,我遇到了从 Azure 应用程序配置更新配置的问题。我成功地能够

回答 1 投票 0

reactor.netty.ioWorkerCount 不同的默认计数

根据netty文档,默认的reactor.netty.ioWorkerCount计数是max(4,核心数),这在本地环境中似乎是正确的。我有一台6核笔记本电脑,还有reactor-http的数量...

回答 2 投票 0

Project Reactor Mono.就在 flatMap 中

尝试搜索一些有关此用法的信息,但尚未找到明确的答案。在阻塞操作上使用 flatMap(非反应式)。当某些操作如

回答 1 投票 0

WebClient 似乎会自行添加请求头。发生在哪里?

这是一个失败的测试: // 这些是非常基本的依赖项,所以我不会包含导入或 pom @测试 无效testIfNoHeadersAreAddedToRequestImplicitly(){ 单声道 这是一个失败的测试: // these are pretty basic dependencies so I won't include imports or pom @Test void testIfNoHeadersAreAddedToRequestImplicitly() { Mono<Map<String, Object>> responseMono = WebClient.builder() .baseUrl("https://httpbin.org") .build() .get() .uri("/headers") .retrieve() .bodyToMono(new ParameterizedTypeReference<>() {}); StepVerifier.create(responseMono.map(m -> m.get("headers")).cast(Map.class)) .expectNextMatches(Map::isEmpty) .verifyComplete(); } 我很确定 WebClient 添加了一些默认请求标头,例如 HOST,我想 👀 see 它发生在哪里。碰巧我需要禁用此功能,但我同样渴望👀看到原因 到目前为止,我对这个问题的调试并不成功 - 包括对 DefaultWebClient.exchange() 的调试,它似乎按预期工作 但是,我发现一个错误的请求被传递给了这个回调 // org.springframework.http.client.reactive.ReactorClientHttpConnector.connect(..) return requestSender // put a breakpoint on the lambda .send((request, outbound) -> requestCallback.apply(adaptRequest(method, uri, request, outbound))) 当我深入挖掘时,Netty 只是假装这些标头一直存在(一旦出现任何请求,它就已经具有这些默认标头) 这个问题也用 WireMock 重现,所以它不太可能与 httpbin 有任何关系(顺便说一句,如果你不熟悉它,你可以访问 API 页面) 当准备发送请求时,Netty 显式添加默认标头。主要兴趣点在这里: // io.netty.handler.codec.http.HttpHeaders public interface HttpHeaders extends Iterable<Map.Entry<String, String>> { HttpHeaders add(String name, Object value); // ... } 您可能知道,Spring 的 WebClient 在底层使用 Project Reactor 和 Netty 来发出 Web 请求。当您创建 WebClient 实例并使用它构建请求时,标头不会立即显示。然而,一旦请求即将发出(当 Netty 的 HttpClientOperations 发挥作用时),Netty 就会添加这些默认标头(如 HOST、Accept-Encoding 等),即使您没有明确设置这些标头。 以下是 GitHub 上 Netty 的 HttpClientOperations 的部分内容: // io.netty.handler.codec.http.HttpClientOperations @Override protected void onOutboundSubscribe(Subscriber<? super ByteBuf> s) { if (!HttpRequestEncoder.encoderHeader(headers(), method(), uri())) { if (log.isDebugEnabled()) { log.debug(format(ctx.channel(), "Dropped {}"), this); } return; } //... } HttpRequestEncoder.encoderHeader(...)部分是准备和添加标头(如果标头不存在)的地方。您也可以查看 encodeHeaders 方法以获得更深入的见解。 这是 HttpClientOperations 中添加标头的时间点: // io.netty.handler.codec.http.HttpHeaders public interface HttpHeaders extends Iterable<Map.Entry<String, String>> { HttpHeaders add(String name, Object value); // ... } 不幸的是,WebClient没有提供开箱即用的解决方案来阻止Netty添加这些标头。但是,您可以创建自定义过滤器并将其添加到您的 WebClient 中,以便在每次构建请求时有意删除这些标头: WebClient.builder() .baseUrl("https://httpbin.org") .filter((clientRequest, next) -> { ClientRequest mutatedRequest = ClientRequest.from(clientRequest) .headers(httpHeaders -> { httpHeaders.remove("Host"); // remove other headers if needed }) .build(); return next.exchange(mutatedRequest); }) .build() .get() // continue with your code for .uri, etc. 这样,每次您构建请求时,过滤器都会在发送请求之前删除 Host 标头(如果您愿意,还可以删除其他标头)。请注意,这可能不是最佳实践,因为某些服务器可能需要 Host 标头或其他标头来处理请求。

回答 1 投票 0

如何对出站 HTTP 请求进行断言?

这是一个例子。它是 org.springframework.cloud.gateway.filter.WebClientHttpRoutingFilter 的修剪和简化版本: 包 com.example.gatewaydemo.misc; 导入java.net.URI; 导入j...

回答 1 投票 0

Spring r2dbc 自定义 Json 转换器不工作

我正在尝试使用 spring webflux 和 postgres sql 将 json 插入 json 列。我创建了用于读写的自定义转换器。问题是现有的 json 值会变成 null,只要

回答 3 投票 0

对于 Spring Boot Web 客户端,记录不可解析响应的首选机制是什么?

这是我的设置。我的大部分代码都通过 webflux 使用 .bodyToMono 。但是,如果发生解析错误,Webclient 没有很好的方法来获取导致问题的原始正文。在这个例子中,

回答 1 投票 0

springboot 3.1.6 webflux 跟踪丢失

我使用以下方法构建了Web客户端。 @豆 公共 XXXApiService xxxApiClient(HttpClient httpClient, WebClient.Builder 构建器) { WebClient webClient = 构建器 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.