问题标签 [spring-reactive]

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 回答
1024 浏览

spring-boot - 从 WebClient 流式传输到 Flux。阻塞超时抛出异常

我在 Spring Boot 应用程序中使用 WebClient 调用流式 API。

我想检索元素,直到我收到 10 个元素或 10 秒过去。我希望请求被阻止,直到任何一个先发生。

如果在超时之前检索到 10 个项目,调用会很好地返回,并且我有一个包含 10 个项目的填充列表。

但是,如果超时首先通过,则会引发以下异常,并且不会返回任何项目。

如何读取长达 x 秒的流,然后使用 WebClient 返回检索到的项目?

0 投票
1 回答
1310 浏览

functional-programming - Spring Webflux 单声道总是以成功的响应来响应

我有一个端点,它接受 id 参数并发送删除产品 api 来删除。productService.delete 也返回 Mono。问题是当 productService.delete 方法返回单声道错误时,端点总是以 http 200 响应。我可以看到有关此单声道错误的错误日志,但我的处理程序方法响应 http 200。

我有一个 AbstractErrorWebExceptionHandler 来处理我的 api 中的异常。但是由于 Mono 的原因,错误处理程序无法处理此问题。当下游发生异常时,Spring webflux 应该知道这个错误并且不会响应 http 200。

顺便说一句,在源代码中,它表示将在给定发布者完成时提交响应。但是错误完成怎么样?我认为 Spring webflux 不会检查它是否是错误信号。只需检查单声道是否完成。

先感谢您。

0 投票
1 回答
1089 浏览

spring-boot - 在 Spring Webflux 中结合非阻塞和阻塞调用并返回结果

我正在使用 Spring Webflux 和 Spring Boot 2,我的场景是这样的:

控制器

服务等级

在返回之前,如何连接 Flux 和正常产品列表中的结果?没有反应式控制器是否有可能?

PS我不想在调用 1 获得的结果上调用 .block() 和 CompleteableFuture

0 投票
1 回答
253 浏览

java - 如何在 Spring Reactive 测试中的 StepVerifier 中使用 iterable

我写了一个创建Flux对象的测试方法。

测试方法:

expectNext() 我的问题是有什么方法可以在不使用多个语句的情况下简化我的测试方法。

0 投票
1 回答
372 浏览

reactive-programming - 调用不从 Spring Reactive Controller 传播到服务方法

我是spring webflux的初学者。我们目前正在将我们的应用程序迁移到 Spring Webflux。不,我遇到了一个问题。以下是我的场景。

主要服务类为数据调用以下服务类

StudentService- 返回Mono<Student>

StaffService- 返回Mono<Staff>

这里我有一个包装类 StudentWithMentor 来存储这些服务类的结果。

现在在控制器中,我正在调用上述 2 个服务并以下列方式将其映射到“StudentWithMentor”中

但是当我调用这个端点时,我在邮递员中得到以下结果

注意:我在调试时从底层服务获得结果。但是调用在它处理之前就返回了。

我怎样才能以完全非阻塞的方式实现这一点。感谢任何帮助。

0 投票
1 回答
225 浏览

api - 发现单声道到T级

我是反应组件的新手。我使用 webclient 进行了 api 调用,响应被包装在 Mono 组件中。有没有办法检查分配给接收到的 Mono 组件中的对象类的值。

收到的响应包装在 Mono<Abc.class> 中。

我想获取消息、电子邮件、状态中的值。

我尝试使用 .block() 但收到的错误 block()/blockfirst()/blocklast() 是阻塞的,线程 reactor-http-nio-4 不支持。

先感谢您。

0 投票
1 回答
445 浏览

spring-webflux - Spring data - webflux - 链接请求

我使用响应式 Mongo 驱动程序和 Web Flux 依赖项

我有如下代码。

员工存储库具有以下代码

  1. 调用 findById 时线程实际上是否阻塞?我了解 map 中的部分实际上阻塞了线程。

  2. 如果它阻塞,我怎样才能使这段代码完全反应?

  3. 此外,在这种编写代码的反应式范例中,我如何处理找不到给定员工的问题?

0 投票
1 回答
829 浏览

spring - spring security reactive - 如何调试“无效凭据”错误?

我想在我的反应式 Spring Boot 应用程序中使用外部 OAuth 提供程序对用户进行身份验证。

按照官方教程,我使用预配置的提供程序(Google、Github 等)成功实现了流程。可以使用这些属性将配置更改为未预配置的提供程序,例如:

使用此设置,会向用户提示登录页面,并使用以下命令调用指定的重定向 url authCode

重定向网址调用

但是,返回此错误页面,控制台中没有日志条目或异常(即使我设置了logging.level.org.springframework.security=DEBUG属性)。

无效凭据错误

可能是什么问题?我什至可以从哪里开始调试呢?

0 投票
1 回答
599 浏览

java - org.springframework.boot.web.reactive.error.DefaultErrorAttributes 在 org.springframework.boot:2.3.1.RELEASE 中不再被调用

弹簧反应式网络:

在 Spring Boot 2.2.* 的早期,我使用了一个扩展 DefaultErrorAttributes 的类。此类用于全局处理整个微服务的异常。当我升级到 2.3.1 时,它不再工作了。我在 2.3.1 版本中没有发现 spring 响应式 web 有任何重大变化。有什么改变可以打破这个吗?我们需要改变什么吗?有输入吗?

似乎不再调用 DefaultErrorAttributes 了。示例代码在这里。

}

0 投票
1 回答
257 浏览

spring-webflux - 在 Spring Gateway 预过滤器中检查数据库的访问权限

我正在使用 Spring Gateway,我需要使用 DB 调用通过请求路径检查进一步的用户访问。我的存储库是这样的。

这是我当前使用自定义UsernamePasswordAuthenticationToken实现的过滤器。

但是,这里有几个问题,首先是阻塞调用。另外我不确定我需要变异exchange以返回这样的响应。无论如何使用 Spring Cloud Gateway 中的过滤器来实现这一点。