问题标签 [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 回答
88 浏览

kotlin - 序列化地图>

所以我有一个带有 webflux 的 GET 请求,如下所示:

要接收的架构如下所示:

当调用被触发时,我收到一个错误:

"JSON encoding error: class java.util.LinkedHashMap cannot be cast to class java.lang.String (java.util.LinkedHashMap and java.lang.String are in module java.base of loader 'bootstrap'); nested exception is com.fasterxml.jackson.databind.JsonMappingException: class java.util.LinkedHashMap cannot be cast to class java.lang.String (java.util.LinkedHashMap and java.lang.String are in module java.base of loader 'bootstrap')"

如何正确编写嵌套地图的自定义序列化?

0 投票
0 回答
190 浏览

java - WebClient ExchangeFilterFunction 缓存来自 ThreadLocal 的值

在将 Spring MVC 与 Webflux 的 ThreadLocal 和 WebClient 一起使用时,我遇到了以下问题。

我的任务是:

  1. 拦截用户对我的应用程序的请求,并从中获取所有标头并将其保存在 ThreadLocal 中。

  2. 之后,当我的应用程序通过 WebClient 调用另一个服务时,在 ExchangeFilterFunction 中拦截此请求,并用 p.1 中的 Authorization 标头补充它。

当我完成处理用户的请求时,我会清除上下文。

我使用我的自定义类“RequestContext”将标头存储在 ThreadLocal 中:

我使用我的自定义类“RequestContextService”来处理 ThreadLocal:

我的应用是一个 WebMvc 应用。为了完成第 1 步,我使用 HandlerInterceptor 拦截请求并将所有标头设置为 Threadlocal。

如您所见,在每次请求后,我都会调用“requestContextService.clear()”方法来清除 ThreadLocal。

为了执行第二步,我使用了 ExchangeFilterFunction,在这里我转向 threadlocal 并从那里获取标题。

问题是 SamlExchangeFilterFunction 只能正常工作一次。

在对应用程序的第一次请求时,一切正常。但是对于具有不同授权标头的进一步请求,ExchangeFilterFunction 似乎缓存了第一个请求的值并替换它,尽管 threadlocal 本身包含授权标头的完全不同的含义。

0 投票
1 回答
259 浏览

spring-boot - 在 Spring Boot Web Flux 中映射 N 个单声道调用

我在 spring boot 中有一个方法,可以进行多个返回类型字符串的单声道调用。此方法最终将返回所有单声道调用的结果,这些结果随后将转换为 POJO 对象。试过 Mono.zip 但这只接受 8 个元组。有更好的解决方案吗?

例如:

0 投票
1 回答
332 浏览

java - Spring Webflux中Controller层错误处理错误

所以我想实现保存用户的功能首先我检查用户是否存在如果存在抛出异常否则保存用户但是当我从服务层抛出异常时.flatMap(user -> Mono.error(new IllegalArgumentException("User Exists with email " + user.getEmail())))

并且在控制器层中,如果我像这样处理它.onErrorResume(error -> ServerResponse.badRequest().bodyValue(error))

它在控制台上引发错误

并返回 200 给客户端

我究竟做错了什么

阅读错误后,它似乎得到了一个空值,但是如果我在onErrorResume(error -> ..)错误变量处调试流程有错误无法理解为什么它仍然抛出杰克逊错误是因为杰克逊无法订阅 ServerResponse 或周围的东西

0 投票
0 回答
35 浏览

spring-webflux - Spring Webflux 多部分文件上传 Windows 文本文件的问题

从 Mac 上传文本文件时,数据正在按预期处理。当从 Windows 代码创建并上传相同的文件时,会出现 Indexoutofbound 异常。

我的休息路由器类:

我的处理程序类:

问题似乎发生在解码行上,我看到从文件中到达几行后从解码返回空值。

有没有更好的方法来读取在任何操作系统上创建的多部分数据文件并存储到数据库中。

如果是我这边的一个小错误,请道歉!

0 投票
0 回答
25 浏览

java - Spring Boot webflux 上传文件内容类型异常

我正在尝试使用 webflux 在本地应用程序中通过邮递员上传文件。我收到错误

接受文件的代码:

执行请求时出现异常:

从邮递员提取的卷曲请求是

我想要上传任何类型的文件,但它不允许任何文件。代码有什么问题?

0 投票
1 回答
95 浏览

java - WebFluxConfigurer 在 Spring webflux 中因功能路由而损坏?

目标是配置我的 webflux servlet 容器,以便无论何时对预定义路径进行 API 调用,都会返回响应,而不管调用是对大写/小写路径进行的。

/api/users应该给出与/api/USERS 相同的结果

此功能路由定义以及下面的 WebFluxConfigurer 似乎无法解决它。

这里有什么问题吗?

0 投票
0 回答
22 浏览

spring - 项目reactor,依次处理元素,等待外部服务返回

我有这段代码,它对响应对象列表进行反应性迭代,并尝试根据内部 id 填充外部 ID,如果两个对象共享相同的内部 id,那么应该使用相同的外部 id

该方法getExternalId必须保留其签名者。

问题是,如果使用具有相同内部 id 的 2 个对象的列表运行此代码,我希望该方法getExternalId被调用一次,并且这两个对象现在也具有相同的外部 id。然而,情况并非如此getExternalId,两个对象的方法和外部 id 不同

编辑:方法的真正实现getExternalId是一个外部服务,所以外部 id 检索需要很长时间。

0 投票
0 回答
107 浏览

spring - 容器环境中的 Spring Webflux cpu

在我们使用 Kubernetes 的环境中,我们的 pod 通常保留不到 1 个 cpu 核心。知道 spring webflux 与 eventloop + workers 的概念一起工作,那将如何工作?是否建议我们为此 pod 保留至少 1 个 cpu 核心?

如果我仍然在 kubernetes 中使用少于 1cpu 请求的 webflux,我的 eventloop 会表现不佳吗?

0 投票
2 回答
224 浏览

java - 项目反应堆,将通量转换为地图>

我有list一个Data对象

如何将其转换为listMap<String,List<Data>>收集data object共享相同的sharedId

我曾尝试使用这行代码,但没有运气