【发布时间】:2020-11-07 22:28:57
【问题描述】:
我正在服务器上使用带有 Reactor 适配器的 Retrofit。我认为它允许我通过简单地使用 Mono 进行改造并将其以 Mono 的形式暴露给 Spring Boot 来解除阻塞(两者之间的所有操作都是响应式的)。
但是我注意到,当我尝试向另一个服务运行一些请求时,该服务内部有一些长时间的操作(需要几秒钟),我的服务看起来像是阻塞了某个线程,就像在适当地进行几个快速调用时一样配置它可能会导致重新启动我的服务(它应该只等待另一个服务响应,并且它接收的数据集很小)。还有一些跟踪工具让我认为我的线程在等待响应时很忙。
我试图找到一些关于此的文档,并查看了一些 OkHttp 和 Okio 代码,但我找不到任何可以使它成为非阻塞的部分,而且它看起来像是阻塞的。
在我的改造配置中我可能会遗漏哪些东西可以使我的呼叫无阻塞,或者也许有人知道没有办法让改造以这种方式工作?或者只是我误解了一些数据,默认情况下它应该是非阻塞的?
我在我的 Retrofit 构建器中添加了这样的设置方法来启用 Reactor:
addCallAdapterFactory(ReactorCallAdapterFactory.create())
【问题讨论】:
标签: spring-boot retrofit2 okhttp nonblocking reactor