- 最后是用于对比的常规web服务类PoolPersonResource.java,这个就是中规中矩的在线程池中取一个线程来执行响应代码
package com.bolingcavalry.resource;import com.bolingcavalry.model.Person;import com.bolingcavalry.repository.PersonRepositoryAsyncAwait;import io.smallrye.common.annotation.RunOnVirtualThread;import javax.inject.Inject;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;@Path("/pool/persons")public class PoolPersonResource {@InjectPersonRepositoryAsyncAwait personRepository;@GET@Path("/{id}")public Person getPersonById(@PathParam("id") Long id) {return personRepository.findById(id);}}- 至此,编码完成
- 编码完成后,在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中包含了所有依赖库)
经验总结扩展阅读
- iphonese3支持5g吗_iphonese3是5G手机吗
- vulnhub靶场之ICA: 1
- 七海ybb是什么梗
- vulnhub靶场之THALES: 1
- 十一 Istio:向istio服务网格中引入虚拟机
- 【多服务场景化解决方案】AR虚拟技术助力智能家装
- 一加9RT支持5G吗_一加9RT支不支持5G
- 苹果11虚拟home键在哪 苹果11手机如何调出虚拟home键
- 红米k40pro有dc调光吗_红米k40pro支持dc调光吗
- OpenCore Legacy Patcher 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur
