MongoDB 是現在廣泛使用到的 NoSQL 資料庫。 Quarkus 這邊用 Panache 提供了一個新存取層且跟 Kotlin 整合的很好。今天主要準備會把 第六天 的 RESTful 的資料來源改成接 MongoDB,MongoDB 有很多種起法,不過 Quarkus 會幫我們準備好,所以就不用擔心,跟著下面的操作一起上手吧!
今天我的專案需要 mongoDB 的 support, 該如果找起呢。很簡單,Quarkus CLI 可以幫你找。在專案的folder 下輸入
quarkus ext list -i -s mongo
列出來了 quarkus-mongodb-panache-kotlin : MongoDB with Panache for Kotlin
看起來這個就是天選之人,就是他了。來安裝吧!
quarkus ext add quarkus-mongodb-panache-kotlin
Quarkus 會需要 docker host ,所以要先準備好 podman 服務在背景。下面為每次重開 wsl instance 一次性的工作
podman system service -t 0 unix:///tmp/podman.sock &
export TESTCONTAINERS_RYUK_DISABLED=true
export DOCKER_HOST=unix:///tmp/podman.sock
打開專案,先檢示 pom.xml 其實剛剛的 ext add 就只是幫你加上dependency
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mongodb-panache-kotlin</artifactId>
</dependency>
我們先執行專案 quarkus:dev。觀察 log 可以發現他幫我們用 podman 起了 mongodb, 立即可以用。
那如果下面噴了 cni keyword 的 error,表示 Ubuntu 22.04 iptable 方式太新。 podman 跟還不支援,需執行
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
想不到環境搞完也差不多一篇。不過今天設定好,之後要開發新增其他 extension 就會輕鬆很多。尤其今天還學了 quarkus cli 怎麼尋找套件的方式,這樣以後要尋找 jdbc, kafka, redis 常見的 backend service 支援就會很容易。那我們就明天就來實際用 kotlin access mongodb 吧。