我们目前使用的是旧版本的 Quarkus,所以我想了解影响并考虑是否应该升级到最新版本。
我了解到,自 2.2 版以来,Quarkus 将根据方法返回类型(https://quarkus.io/blog/resteasy-reactive-smart-dispatch/#new-world-new-rulesI/O thread
)运行方法,这意味着阻塞/ //同步方法不返回,会自动卸载到工作线程,不会阻塞I/O线程。Worker thread
Uni
Multi
CompletionStage
在我们当前使用旧版 Quarkus 和 RESTEasy Reactive(我认为是 1.12.2)的实现中,对于所有not
返回的方法Uni
//我相信它们将在 I/O 线程上被调用,因为我们没有在它们上使用Multi
它们。这些方法包括调用外部 API、访问数据库和访问文件等操作,所以我认为我们应该有责任通过使用响应式库以非阻塞/异步方式执行这些操作,否则它们会阻塞 I/ O 线程(鉴于并非我提到的所有这些方法当前都是使用响应式库实现的)。但是升级到最新版本将解决这个问题,因为这些方法将被卸载到工作线程,我正确吗?CompletionStage
@Blocking
PS:通过阅读 Quarkus 文档,我了解到最少的 I/O 线程可以处理许多并发请求。我很好奇默认情况下有多少个 I/O 线程,这是可配置的吗?谢谢!