- 至此,编码完成
- 编码完成后,在IDEA上启动应用做本地调试是咱们的基本操作,所以IDEA运行环境也要设置成支持JDK19的预览特性
- 打开入口类,点击main方法前面的绿色箭头,在弹出的菜单上选择Modify Run Configuration
文章插图
- 在运行应用的设置页面,如下操作
文章插图
- 选中Add VM options
文章插图
- 填入下图箭头所指的内容
文章插图
- 终于 , 设置完成,接下来要启动应用了
- 启动应用之前,请确认postgresql数据库已启动,并且数据已经导入,具体启动和导入方法请参考前文
- 点击下图红色箭头中指向的按钮,即可在IDEA中运行应用
文章插图
- 浏览器访问地址:http://localhost:8080/vt/persons/1 ,如下图,符合预期
文章插图
- 在前文中,咱们是在docker上运行应用的,另外在实际场景中应用运行在docker或者k8s环境也是普遍情况,所以接下来一起实战将用做成docker镜像并验证
- 在创建工程的时候,IDEA就用quarkus模板自动创建了多个Dockerfile文件 , 下图红框中全是
文章插图
- 如果当前应用的JDK不是19,而是11或者17,那么上图红框中的Dockerfile文件就能直接使用了 , 然而,由于今天咱们应用的JDK必须是19,就无法使用这些Dockerfile了,必须自己写一个,原因很简单,打开Dockerfile.jvm , 如下图红色箭头所示,基础镜像是jdk17,而这个仓库中并没有JDK19,也就是说quarkus还没有发布JDK19版本的基础镜像,咱们要自己找一个 , 另外,容器启动命令也要调整,需要加入--enable-preview才能开启JVM的虚拟线程
文章插图
- 自己写的Dockerile文件名为Dockerfile.19,内容如下,可见非常简单:先换基础镜像,再把mvn构建结果复制过去,最后加个启动命令就完事儿了(远不如官方的分层构建节省空间,然而在官方的JDK19镜像方案出来之前,先用下面这个将就着用吧)
FROM openjdk:19ENV LANGUAGE='en_US:en'# 执行工作目录WORKDIR applicationCOPY --chown=185 target/*.jar ./RUN mkdir configEXPOSE 8080USER 185ENTRYPOINT ["java", "-jar", "--enable-preview", "quarkus-virual-threads-demo-1.0-SNAPSHOT-runner.jar"]
- 接下来可以制作镜像了 , 请确保自己电脑上docker已在运行
- 首先是常规maven编译打包(uber-jar表示生成的jar中包含了所有依赖库)
mvn clean package -U -DskipTests -Dquarkus.package.type=uber-jar
- 构建docker镜像
docker build -f src/main/docker/Dockerfile.19 -t bolingcavalry/quarkus-virual-threads-demo:0.0.2 .
- 镜像制作成功,控制台输出如下图
文章插图
- 如果您有hub.docker.com的账号,也可以像我一样推送到公共仓库 , 方便大家使用
- 回顾Dockerfile中启动应用的命令,由于虚拟线程是JDK19的预览功能,因此必须添加下图红色箭头所指的--enable-preview参数才能让虚拟线程功能生效
文章插图
- 于是我就在想:不加这个参数会咋样?也就是不开启虚拟线程,但是代码中却要用它,那么真正运行的时候会如何呢?
- 瞎猜是没用的,还是试试吧,在启动参数中删除--enable-preview , 如下图,再重新构建镜像
文章插图
- 像前文那样运行容器(再次提醒,确保数据库是正常的) , 再在浏览器访问http://localhost:8080/vt/persons/1,页面正常显示了 , 看来功能是不受影响的
推荐阅读
- iphonese3支持5g吗_iphonese3是5G手机吗
- vulnhub靶场之ICA: 1
- vulnhub靶场之THALES: 1
- 十一 Istio:向istio服务网格中引入虚拟机
- 【多服务场景化解决方案】AR虚拟技术助力智能家装
- 一加9RT支持5G吗_一加9RT支不支持5G
- 红米k40pro有dc调光吗_红米k40pro支持dc调光吗
- OpenCore Legacy Patcher 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur
- iqoo8pro有红外吗_iqoo8pro支持红外功能吗
- vivox60pro+支持无线充电吗_vivox60pro+电池容量是多少