gpt4 book ai didi

java - 使用 WebFlux 阻止 I/O 操作

转载 作者:行者123 更新时间:2023-12-02 11:43:43 25 4
gpt4 key购买 nike

我们有一个流程,希望使用 Spring Boot 2 WebFlux 通过响应式(Reactive)编程来实现。目前我们没有反应式编程的经验。
作为此流程的一部分,我们将创建一个或多个 HTTP 请求(我猜使用 WebClient),并从数据库读取一些数据。
我们正在考虑使用 AWS DynamoDB,但据我了解 Java SDK 不支持响应式(Reactive) API。
此读取将是一个阻塞 I/O 操作,我的问题是使用 WebFlux 实现此流程的一部分是否有好处?更一般地说,流程中的单个阻塞 I/O 操作是否会消除我们通过响应式编程实现所获得的所有好处?

最佳答案

根据你的问题,响应式(Reactive)是处理阻塞操作尤其是IO(网络、文件等...)的空闲方式

您可以使用以响应式方式实现此 api 的,或者使用响应式 api包装阻塞请求,这通常通过将阻塞操作放在花药上来完成线程池

在 spring webflux 中你可以实现类似的东西

@GetMapping
public Mono<Response> getResponse() {
return Mono.fromCallable(() -> blockingOp())
.publishOn(Schedulers.elastic());
}

publishOn 在这种情况下将导致所有这些流程发生在另一个线程上,您可以选择专用线程池作为您的选择

来自 docs弹性是一个

Scheduler that dynamically creates ExecutorService-based Workers and caches the thread pools, reusing them once the Workers have been shut down.

关于java - 使用 WebFlux 阻止 I/O 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52945696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com