当前位置: 首页 > 知识库问答 >
问题:

Quarkus RESTEasy 2.2版之前如何工作?

缑修齐
2023-03-14

我们目前使用的是老版本的夸克,所以我想了解它的影响并考虑我们是否应该升级到最新版本。

我了解到,由于版本2.2 QUUKUS将运行方法上的I/O线程或工作线程取决于方法返回类型(https://quarkus.io/blog/resteasy-reactive-smart-dispatch/#new-world-new-rules),这意味着阻止/同步方法不返回Uni将自动卸载到一个工作线程,这样它就不会阻塞I/O线程。

在我们当前使用较旧版本的Quarkus和RESTEasy Responsive(我认为它是1.12.2)的实现中,对于所有方法not返回Uni/Multi/CompletionStage,我相信它们将在I/O线程上被调用,因为我们没有在它们上使用 。这些方法包括调用外部API、访问数据库和访问文件等操作,因此我认为我们应该负责使用反应库以非阻塞/异步方式执行这些操作,否则,它们将阻塞I/O线程(考虑到我提到的所有方法目前都不是使用反应库实现的)。但是升级到最新版本将解决这个问题,因为这些方法将被卸载到工作线程,对吗?

注意:通过阅读Quarkus文档,我了解到少量的I/O线程可以处理许多并发请求。我很好奇默认情况下有多少I/O线程,这是可配置的吗?谢谢


共有1个答案

羊舌赞
2023-03-14

您正确地假设,在QUUKUS 2.2之前,RESTEasy Reactive的默认值是处理所有方法的事件循环上的请求,除非使用了@Block。不言而喻,这意味着您不需要在这些方法中执行任何阻塞IO(或为此进行任何长时间运行的操作)。

Kwkus使用2*number_of_cpu_threads作为它创建的事件循环线程的默认数量

 类似资料:
  • 我想我错过了一些关于之前和之前的方式。我有一个规范文件,加载数据从夹具在之前的方法。这些数据中的一部分被用在之前的函数中,然后又被用在之前的函数中,以及在实际的测试中。规范文件包含2个测试。第一个测试按预期执行。第二个失败,因为beForeeach表示来自夹具的值之一未定义。 我的期望是,如果我加载数据从一个夹具在之前的方法,它应该是可用于所有测试规范文件。 在执行“检查按钮栏的状态”时,测试be

  • 前端工作版块 可以列出很多寻找技术工作的方法. 下面的有限列表是和寻找一份具体的前端工作最相关的资源: frontenddeveloperjob.com authenticjobs.com weworkremotely.com jobs.github.com careers.stackoverflow.com angularjobs.com jobs.emberjs.com jobs.jsninj

  • 我在我的应用程序中使用了Android设计库的浮动动作按钮,它在Lollipop和以上版本上工作良好,但在Lollipop之前的版本(4.0-4.2.2)上崩溃了。我真的卡住了,弄不清这个问题。 错误:

  • 问题内容: 在Jenkins Pipeline中,如何将工件从先前的版本复制到当前的版本?即使以前的构建失败,我也想这样做。 问题答案: Stuart Rowe还在管道制作Sig Gitter频道 上向我推荐了我查看“复制工件插件”的方法,但也给了我一些要使用的Jenkins Pipeline语法 示例。 根据他给出的建议,我想到了一个更完整的Pipeline示例,该示例将工件从先前的构建复制到当

  • 问题内容: 我正在尝试了解join()的代码流。 正如我在多次运行程序后所观察到的那样,输出始终是首先执行的,并且它将在任何时候都不会进行任何上下文切换。我的理解清楚吗? 我观察到一些东西,如果不使用连接,将在线程执行的任何地方执行,这意味着我在程序的输出之间看到输出,但是总是在线程t3 之后执行。我怀疑这是语法开始之前的问题,因此它不应该跟随t3 / t1线程完成吗?这有意义还是我想念的东西?