這裡分類和彙總了欣宸的全部原創(含配套原始碼):https://github.com/zq2599/blog_demos
看到這裡,您可能會說:就這?一個註解就搞定的事情,你還要寫一篇文章?這不是在浪費作者你自己和各位讀者的時間嗎?
確實,開啟虛擬執行緒,編碼只要一行,然而就目前而言,虛擬執行緒是JDK19專屬,而且還只是預覽功能,要想在實際執行的時候真正開啟並不容易,需要從JDK、maven、IDE等方方面面都要做相關設定,而且如果要做成前文那樣的docker映象,一行docker run命令就能開啟虛擬執行緒,還要在Dockerfile上做點事情(quarkus提供的基礎映象中沒有JDK19版本,另外啟動命令也要調整)
上述這些都是本文的重點,欣宸已經將這些梳理清楚了,接下來咱們一起實戰吧,讓前文體驗過的web從無到有,再到順利執行,達到預期
整個開發過程如下圖所示,一共十步,接下來開始動手
➜ ~ mvn -version
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /Users/zhaoqin/software/apache-maven-3.8.5
Java version: 19, vendor: Azul Systems, Inc., runtime: /Library/Java/JavaVirtualMachines/zulu-19.jdk/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "12.6", arch: "aarch64", family: "mac"
FROM openjdk:19
ENV LANGUAGE='en_US:en'
# 執行工作目錄
WORKDIR application
COPY --chown=185 target/*.jar ./
RUN mkdir config
EXPOSE 8080
USER 185
ENTRYPOINT ["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 build -f src/main/docker/Dockerfile.19 -t bolingcavalry/quarkus-virual-threads-demo:0.0.2 .
至此,一個完整的quarkus應用已開發完成,該應用使用虛擬執行緒來響應web請求,而且在quarkus官方還沒有提供方案的前提下,咱們依舊完成了docker映象的製作,最後,因為好奇,還關閉重要引數嘗試了一下,一系列操作下來,相信您已經對基礎開發瞭如指掌了
最後,還剩下兩個遺留問題,相信您也會有類似困惑
以上問題會在接下來的《支援JDK19虛擬執行緒的web框架,終篇》得到解決,還是那句熟悉的廣告詞:欣宸原創,不辜負您的期待