Yos*_*sha 6 java nonblocking reactive-programming spring-boot spring-webflux
我们有一个流程,希望使用 Spring Boot 2 WebFlux 通过反应式编程来实现。目前我们没有反应式编程的经验。
作为此流程的一部分,我们将创建一个或多个 HTTP 请求(我猜使用 WebClient),并从数据库读取一些数据。
我们正在考虑使用 AWS DynamoDB,但据我了解 Java SDK 不支持反应式 API。
此读取将是一个阻塞 I/O 操作,我的问题是使用 WebFlux 实现此流程的一部分是否有好处?更一般地说,流程中的单个阻塞 I/O 操作是否会消除我们通过响应式编程实现所获得的所有好处?
根据你的问题,反应式是处理阻塞操作尤其是IO(网络、文件等......)的空闲方法
您可以使用以响应式方式实现此 api 的库,或者使用响应式 api 包装阻塞请求,这通常通过将阻塞操作放置在另一个线程池上来完成
在 spring webflux 中你可以实现类似的东西
@GetMapping
public Mono<Response> getResponse() {
return Mono.fromCallable(() -> blockingOp())
.publishOn(Schedulers.elastic());
}
Run Code Online (Sandbox Code Playgroud)
publishOn在这种情况下,将导致所有这些流程发生在另一个线程上,您可以选择专用线程池作为您的选择
从文档来看,elastic是一个
调度程序动态创建基于 ExecutorService 的 Workers 并缓存线程池,并在 Workers 关闭后重用它们。
| 归档时间: |
|
| 查看次数: |
4284 次 |
| 最近记录: |