quarkus 使用什么应用服务器?

D.T*_*mov 4 java quarkus

启动 quarkus jar 时,我没有看到任何服务器启动,我看到的是:

C:\Java Projects\quarkus-demo\target>java -jar quarkus-demo-1.0-SNAPSHOT-runner.jar
2020-01-04 18:25:54,199 WARN  [io.qua.net.run.NettyRecorder] (Thread-1) Localhost lookup took more than one second, you ne
ed to add a /etc/hosts entry to improve Quarkus startup time. See https://thoeni.io/post/macos-sierra-java/ for details.
2020-01-04 18:25:54,521 INFO  [io.quarkus] (main) quarkus-demo 1.0-SNAPSHOT (running on Quarkus 1.1.0.Final) started in 3.
231s. Listening on: http://0.0.0.0:8080
2020-01-04 18:25:54,522 INFO  [io.quarkus] (main) Profile prod activated.
2020-01-04 18:25:54,522 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy, resteasy-jackson]
Run Code Online (Sandbox Code Playgroud)

这意味着什么?不是使用应用服务器吗?Quarkus 是应用服务器还是类似的东西?我似乎无法在网上找到有关此的任何信息。

Lor*_*uro 11

Quarkus 使用 Vert.x/Netty。

来自https://developers.redhat.com/blog/2019/11/18/how-quarkus-brings-imperative-and-reactive-programming-together/

Quarkus 使用 Vert.x 和 Netty 作为其核心。而且,它在顶部使用了一堆反应式框架和扩展来帮助开发人员。Quarkus 不仅适用于 HTTP 微服务,还适用于事件驱动架构。它的反应性质使其在处理消息(例如,Apache Kafka 或 AMQP)时非常有效。

这背后的秘密是对命令式和反应式代码使用单个反应式引擎。

Quarkus 在这方面做得非常出色。在命令式和反应式之间,显而易见的选择是拥有一个反应式核心。有帮助的是一个快速的非阻塞代码,它处理几乎所有通过事件循环线程(IO 线程)进行的事情。但是,如果您正在创建典型的 REST 应用程序或客户端应用程序,Quarkus 还为您提供命令式编程模型。例如,Quarkus HTTP 支持基于非阻塞和反应式引擎(Eclipse Vert.x 和 Netty)。您的应用程序收到的所有 HTTP 请求都由事件循环(IO 线程)处理,然后路由到管理请求的代码。根据目标,它可以调用管理工作线程(servlet、Jax-RS)上的请求的代码或使用 IO 线程(反应式路由)。


Gee*_*nte 10

它是一个微服务框架,而不是应用程序服务器。您无法在 Quarkus 服务器上“部署”多个应用程序,Quarkus 只是启动 TCP 套接字以服务一个应用程序的启动序列的一部分。

过去,应用程序服务器旨在使用单个 JVM 运行时在一台机器上部署/启动/停止多个应用程序,而无需停止 JVM。Quarkus 和其他微服务框架针对的是 Docker 运行时,并且不再真正关心为多个应用程序启动和停止多个 JVM。他们也不关心应用程序升级需要停止和启动 JVM,而旧的应用程序服务器试图避免这种情况。