4

我有一些微服务,它们应该在 WebFlux 框架之上工作。每个服务器都有自己的带有 Mono 或 Flux 的 API。我们使用的是 Spring 支持的 MongoDB(Spring Data MongoDb Reactive)。

问题是外部阻塞 API,我必须在我的系统中使用它。

我有一个解决方案。我可以将阻塞 API 调用包装在专用线程池中,并将其与 CompletableFuture 一起使用。

还有什么可以解决我的问题吗?我认为,全新的 Rsocket 无法解决我的问题。

4

3 回答 3

1

1.如果可能,您可以使用 WebClient 类将阻塞 API 调用更改为反应方式。

参考:

  1. 参考指南
  2. 网络客户端 API
  3. 一个简单、完整的示例

2.如果阻塞API不能改成响应式API,我们应该有一个专用的、调优的线程池,并在那里隔离阻塞代码。这里也有一个例子。

于 2018-10-09T06:53:35.903 回答
0

我不明白为什么不能将阻塞 API 调用包装在 Flux 或 Mono 中。如果 Actor 模型对您来说更容易,您也可以将 Akka 与 Spring 集成。

于 2020-08-15T18:50:02.187 回答
0

RSocket 应该是一个完美的选择,很好的教程让你开始

https://www.baeldung.com/spring-boot-rsocket

https://spring.io/blog/2020/04/06/getting-started-with-rsocket-spring-boot-channels

于 2020-12-15T07:46:37.563 回答