【支持JDK19虚拟线程的web框架,之一:体验】sudo docker run \--name postgres \-p 5432:5432 \-e POSTGRES_DB=quarkus_test \-e POSTGRES_USER=quarkus \-e POSTGRES_PASSWORD=123456 \-d \postgres:15
建表,添加数据
- 用数据库工具连接数据库(我这里用的是IDEA的数据库工具),执行以下命令,会新建一个表,并导入6条记录
create table person (id serial primary key,name varchar(255),gender varchar(255),age int,external_id int);insert into person(name, age, gender, external_id) values('John Smith', 25, 'MALE', 10);insert into person(name, age, gender, external_id) values('Paul Walker', 65, 'MALE', 20);insert into person(name, age, gender, external_id) values('Lewis Hamilton', 35, 'MALE', 30);insert into person(name, age, gender, external_id) values('Veronica Jones', 20, 'FEMALE', 40);insert into person(name, age, gender, external_id) values('Anne Brown', 60, 'FEMALE', 50);insert into person(name, age, gender, external_id) values('Felicia Scott', 45, 'FEMALE', 60);
部署quarkus应用- 登录用于部署quarkus应用的服务器,确保服务器上已经成功部署了docker
- 新建名为application.properties的配置文件,内容是数据库相关的参数,如下所示
quarkus.datasource.db-kind=postgresqlquarkus.datasource.username=quarkusquarkus.datasource.password=123456quarkus.datasource.reactive.url=postgresql://192.168.0.99:5432/quarkus_test
- 我这里,application.properties的路径是:/home/lighthouse/config/quarkus/application.properties
- 检查application.properties文件的可读性,执行以下命令设置
sudo chmod a+r application.properties
- 执行以下命令即可部署和启动quarkus应用,注意application.properties文件的位置要换成您自己的配置文件路径
docker run -idt \--name quarkus \-p 8080:8080 \-v /home/lighthouse/config/quarkus/application.properties:/application/config/application.properties \bolingcavalry/quarkus-virual-threads-demo:x64-0.0.3
- 上述命令中,quarkus应用的镜像bolingcavalry/quarkus-virual-threads-demo:x64-0.0.3是我提前准备好的,本篇只管使用即可,至于如何制作此镜像,接下来的文章会有详细说明
- 用sudo docker logs quarkus命令查看启动日志,如果启动成功,信息如下所示
__________________ __________ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \--\___\_\____/_/ |_/_/|_/_/|_|\____/___/2022-10-16 11:46:41,406 INFO[io.quarkus] (main) quarkus-virual-threads-demo 1.0-SNAPSHOT on JVM (powered by Quarkus 2.13.2.Final) started in 0.804s. Listening on: http://0.0.0.0:80802022-10-16 11:46:41,414 INFO[io.quarkus] (main) Profile prod activated.2022-10-16 11:46:41,414 INFO[io.quarkus] (main) Installed features: [cdi, reactive-pg-client, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
验证基本功能- 假设quarkus所在宿主机的IP地址是192.168.0.1,那么在浏览器上访问地址http://192.168.0.1:8080/vt/persons/1,如下图,应用成功从数据库取得数据,并且将当前线程信息也返回给浏览器

文章插图
- 作为对比,该服务器上还有个使用虚拟线程的常规web服务,地址是:http://192.168.0.1:8080/pool/persons/1,如下图,该接口也能从数据库取得数据,并且将当前线程信息也返回给浏览器,注意两个接口线程信息的差异

文章插图
- 对于虚拟线程的接口http://192.168.0.1:8080/vt/persons/1,可以尝试多次访问,可见每次返回的虚拟线程Id都不一样,而使用线程池的接口http://192.168.0.1:8080/pool/persons/1,多次访问,返回的始终是同一个线程的id
经验总结扩展阅读
- 华为P50支持几倍变焦_华为P50有光学防抖吗
- oppo手机虚拟按键在哪里设置 oppo虚拟按键怎么设置
- 小米11Ultra支持变焦吗_支持多少倍变焦
- 属马和属马人缘份发展趋势 中等婚配多支持
- 虚拟化_Vmware——敬请期待!
- 虚拟化_Xen——敬请期待!
- 小米11支持人脸支付吗_小米11支持人脸识别吗
- 如何用Virtualbox搭建一个虚拟机
- 华为nova9支持NFC吗_华为nova9有NFC功能吗
- vulnhub靶场之EMPIRE