如何设计具有外部阻塞API调用的反应微服务?

时间:2018-10-07 13:21:50

标签: spring spring-boot reactive-programming spring-webflux rsocket

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

问题是必须在系统中使用的外部阻止API。

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

还有其他解决我的问题的方法吗?我认为,全新的Rsocket无法解决我的问题。

3 个答案:

答案 0 :(得分:0)

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

参考文献:

  1. Reference guide
  2. WebClient API
  3. A simple, complete sample

2。如果不能将阻塞API更改为反应性API,我们应该有一个专用的,经过良好调整的线程池,并在其中隔离阻塞代码。 还有一个示例here

答案 1 :(得分:0)

我不明白为什么您不能将阻塞API调用包装在Flux或Mono中。如果演员模型对您来说更简单,您也可以integrate Akka with Spring

答案 2 :(得分:0)