简介

Quarkus是类似于Spring Boot的框架,可以方便大家进行Java开发。利用GraalVM的魔力,能更好的适应云原生的场景,极快的启动速度。

创建项目

在IDEA就直接有创建Quarkus项目的初始化工具,直接根据自己需要填好即可,非常方便:

选择自己需要的一些组件和依赖,我这里只选择Web Reactive。这跟Spring Boot挺像的。

生成的Java代码就一个文件,很简单小巧:

编译运行

创建成功后,把编译目标改为11,因为我用的是JDK11。通过mvn clean package尝试打包,下载依赖包。编译成功后,IDEA支持直接跑Quarkus程序,如下:

启动成功如下:

Quarkus在首页提供了一些开发信息和工具,如下:

访问服务如下:

直接修改Java代码:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from pkslow.com";
}

不用重启就可以生效:

在Docker上运行

打包成Native的Docker镜像,命令如下:

$ mvn clean package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=docker

第一次可能比较长时间,需要下载镜像。但这种打镜像的方法是把文件放在镜像外面。通过-v的方式来运行。

所以我们再通过下面命令来生成镜像:


$ docker build -f src/main/docker/Dockerfile.native -t pkslow/quarkus-quickstart .
Sending build context to Docker daemon 55.41MB
Step 1/7 : FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6
8.6: Pulling from ubi8/ubi-minimal
a6577091999b: Pull complete
Digest: sha256:33931dce809712888d1a8061bfa676963f517daca993984afed3251bc1fb5987
Status: Downloaded newer image for registry.access.redhat.com/ubi8/ubi-minimal:8.6
---> abb1ba1bceab
Step 2/7 : WORKDIR /work/
---> Running in b1f6c5c33919
Removing intermediate container b1f6c5c33919
---> 44961ddcb521
Step 3/7 : RUN chown 1001 /work && chmod "g+rwX" /work && chown 1001:root /work
---> Running in e1c1a83e964f
Removing intermediate container e1c1a83e964f
---> 225868ceda2c
Step 4/7 : COPY --chown=1001:root target/*-runner /work/application
---> 55b2bba61da1
Step 5/7 : EXPOSE 8080
---> Running in 9b90514423eb
Removing intermediate container 9b90514423eb
---> 00f981b47b0e
Step 6/7 : USER 1001
---> Running in bd5d1b723784
Removing intermediate container bd5d1b723784
---> 14d55159d2d9
Step 7/7 : CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
---> Running in c60a96727644
Removing intermediate container c60a96727644
---> 77fdda464a6a
Successfully built 77fdda464a6a
Successfully tagged pkslow/quarkus-quickstart:latest

通过Docker来启动:

$ docker run -i --rm -p 8080:8080 pkslow/quarkus-quickstart
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2022-11-01 07:36:38,557 INFO [io.quarkus] (main) quarkus-quickstart 1.0-SNAPSHOT native (powered by Quarkus 2.13.3.Final) started in 0.022s. Listening on: http://0.0.0.0:8080
2022-11-01 07:36:38,558 INFO [io.quarkus] (main) Profile prod activated.
2022-11-01 07:36:38,558 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]

可以看出启动相当快,才用了22ms。访问对应的网页和接口也是正常的。

代码

代码请看GitHub: https://github.com/LarryDpk/pkslow-samples


References:

CREATING YOUR FIRST APPLICATION

BUILDING A NATIVE EXECUTABLE

Quarkus入门体验,22ms启动一个Web服务的更多相关文章

  1. weblogic的安装和注意的问题以及在idea怎么用weblogic启动一个web服务

    第一步下载weblogic: 大家可以通过我的网盘下载weblogic,地址如下 https://pan.baidu.com/s/1NkZ_Gd-xfim5YGcdtjYoUw 第二步安装weblog ...

  2. Tornado 高并发源码分析之一---启动一个web服务

    前言: 启动一个tornado 服务器基本代码 class HomeHandler(tornado.web.RequestHandler): #创建 RequesHandler 对象,处理接收到的 h ...

  3. wsgiref手写一个web服务端

    ''' 通过wsgiref写一个web服务端先讲讲wsgiref吧,基于网络通信其根本就是基于socket,所以wsgiref同样也是通过对socket进行封装,避免写过多的代码,将一系列的操作封装成 ...

  4. 搭建一个web服务下载HDFS的文件

    需求描述 为了能方便快速的获取HDFS中的文件,简单的搭建一个web服务提供下载很方便快速,而且在web服务器端不留临时文件,只做stream中转,效率相当高! 使用的框架是SpringMVC+HDF ...

  5. 【LINUX】——linux如何使用Python创建一个web服务

    问:linux如何使用Python创建一个web服务? 答:一句话,Python! 一句代码: /usr/local/bin/python -m SimpleHTTPServer 8686 > ...

  6. 20190710用控制台启动一个wcf服务

    快速阅读 如何用控制台启动一个wcf服务,已经wcf的配置和在类库中如何实现 . wcf类库 用vs新建一个类库,引用system.ServiceModel 定义接口实现服务契约和操作契约 [Serv ...

  7. 还能不能愉快地起一个web服务啦?——1st Step!白话http和代码交互的那点儿事儿~

    学写python的时候,我们多多少少都接触到了web程序,然而你有没有想过,当浏览器发送了一个http请求时,等待接收这个请求的后端代码是一种什么样的思想感情? 就像下面这张图里画的一样,后端也许是一 ...

  8. [lucene系列笔记3]用socket把lucene做成一个web服务

    上一篇介绍了用lucene建立索引和搜索,但是那些都只是在本机上运行的,如果希望在服务器上做成web服务该怎么办呢? 一个有效的方法就是用socket通信,这样可以实现后端与前端的独立,也就是不管前端 ...

  9. ASP.NET MVC3入门教程之第一个WEB应用程序

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=91&extra=page%3D1 上一节,我们已经搭建好了AS ...

  10. Tornado创建一个web服务

    import tornado.web import tornado.ioloop import tornado.httpserver import tornado.options import con ...

随机推荐

  1. SQL Server-表结构的操作

    1.修改表的字段的数据类型 alter table [File_Info] alter column Upload_Request_ID nvarchar(14) not null 2.添加表的字段并 ...

  2. 微信小程序之顶部导航栏

    wxml: <!--导航条--><view class="navbar"> <text wx:for="{{navbar}}" d ...

  3. 创建base公共组件

    公共模块 基础模块参照了vant的思路,使用bem命名规范.先创建一个命名空间,这个命名空间返回创建组件函数与生成命名方法.在创建组件函数中创建name与install属性用于注册vue组件 创建组件 ...

  4. springcloud组件梳理之hystrix

    在微服务架构体系中,各服务中间的相互调用是常态,没有哪个服务能保证自身百分百不会出问题,然后再加上网络的波动以及环境等问题,服务间调用的稳定性无法保证,这时候就需要一个有容错能力的组件来介入,当调用出 ...

  5. perl中sprintf函数的用法

    对于某些字符串,需要输入为特定的格式,通过sprintf可以很方便的完成,不需要专门进行其他处理. 转载 perl中sprintf函数的使用方法.

  6. hashcat 命令

    hashcat --force --stdout -a 6 tmp.txt ?d?d?d?d?d?d?d > result.txt tips:将tmp.txt字典中的内容与7位随机掩码字符组合, ...

  7. gRPC(Java) keepAlive机制研究

    基于java gRPC 1.24.2 分析 结论 gRPC keepAlive是grpc框架在应用层面连接保活的一种措施.即当grpc连接上没有业务数据时,是否发送pingpong,以保持连接活跃性, ...

  8. 谷歌、微软、Meta?谁才是 Python 最大的金主?

    你知道维护 Python 这个大规模的开源项目,每年需要多少资金吗? 答案是:约 200 万美元! PSF(Python 软件基金会)在 2022 年 6 月发布了 2021 的年度报告,其中披露了以 ...

  9. AI赋能音乐创作,人人都是音视频创作者

    华为HMS Core音频编辑服务(Audio Editor Kit)依托自身AI技术的研发优势,上线全新的歌声合成音色及伴奏,给音视频创作者提供更多的创作可能.在短视频场景中,用户自定义歌词的歌声结合 ...

  10. VS2019 iis无法在Web服务器上启动调试。打开的URL的IIS辅助进程当前没有运行

    可以检查W3SVC服务与WAS这两个服务是否正在运行. 重启这两个服务就可以正常了