August 7, 2019
By: 于壮壮

Luminus 数据库连接池配置

Luminus是通过coman来管理数据库连接的。coman是封装了HikariCP

conman连接池的配置

 (ns myapp.db
  (:require [mount.core :refer [defstate]]
            [conman.core :as conman]))           
;;连接池配置
(def pool-spec
  {:jdbc-url "jdbc:postgresql://localhost/myapp?user=user&password=pass"})

(defstate ^:dynamic *db*
          :start (conman/connect! pool-spec)
          :stop (conman/disconnect! *db*))

具体的配置信息可以查看hikari-cp

Luminus默认的数据库连接池的配置是在project.db.core namespace下

 (defstate ^:dynamic *db*
  :start (if-let [jdbc-url (env :database-url)]
           (conman/connect! {:jdbc-url jdbc-url})
           (do
             (log/warn "database connection URL was not found, please set :database-url in your config, e.g: dev-config.edn")
             *db*))
  :stop (conman/disconnect! *db*))

它仅仅是是从配置文件读取了:database-url作为连接池属性:jdbc-url的值。下面是配置文件的内容:

 {
 :dev true
 :port 3000
 :nrepl-port 7000
 :database-url "jdbc:log4jdbc:mysql://localhost:3306/custombackend?user=root&password=root&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong"
}

如果你需要修改连接池其他属性,这里就要小小的改动。

修改后的core.clj文件

(defstate ^:dynamic *db*
 :start (if-let [pool-spec (env :database)]
          (conman/connect! pool-spec)
          (do
            (log/warn "database connection URL was not found, please set :database-url in your config, e.g: dev-config.edn")
            *db*))
 :stop (conman/disconnect! *db*))

修改后的配置文件

{:dev true
 :port 3000
 :nrepl-port 7000
 ;; 数据库连接池配置属性
 :database
 {:jdbc-url "jdbc:log4jdbc:mysql://localhost:3306/custombackend?user=root&password=root&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong"
  :maximum-pool-size 5}
 }
Tags: clojure