2016-03-24 19 views
0

Scala uygulamamı bir ana düğüm ve 3 köle/okuma kopyası içeren bir Postgres kümesine bağlamayı deniyorum. Benim dosyasına koyarak bu bugün gibi görünür: Postgres' documentation dayanarakScala Slick yapılandırması Postgres Köleler/Okuma Kopyaları

slick { 
    dbs { 
    default { 
     driver = "com.company.division.db.ExtendedPgDriver$" 
     db { 
     driver = "org.postgresql.Driver" 
     url = "jdbc:postgresql://"${?DB_ADDR}":"${?DB_PORT}"/"${?DB_NAME} 
     user = ${?DB_USERNAME} 
     password = ${?DB_PASSWORD} 
     } 
    } 
    } 
} 

, böyle, hangi bana biraz yük devretme yetenekleri verecek bir JDBC URL'de ana ve köle tüm tanımlayabilirsiniz:

jdbc:postgresql://host1:port1,host2:port2/database 
Ben okuma benim bağlantılarını ayırmak ve yetenekleri yazmak isterseniz

Ancak, böyle iki JDBC URL'ler tanımlamak zorunda:

jdbc:postgresql://node1,node2,node3/database?targetServerType=master 
jdbc:postgresql://node1,node2,node3/database?targetServerType=preferSlave&loadBalanceHosts=true 

nasıl Slick içinde iki JDBC URL'ler tanımlayabilir ? Slick.dbs altındaki iki ayrı varlığı mı tanımlamalıyım yoksa slick.dbs.default.db öğemin birden çok birden çok URL tanımlanmış olabilir mi?

cevap

0

Daniel Westheide's blog post'dan bir yanıt bulundu. Özetlemek gerekirse, bir DB sarıcı sınıfı ve salt okunur sorguların yönlendiği ve yazma sorgularının yönlendirildiği yerleri denetlemek için belirli kurallar sağlayan özel Efekt türleri ile yapılabilir.

slick { 
    dbs { 
    default { 
     driver = "com.yourdomain.db.ExtendedPgDriver$" 
     db { 
     driver = "org.postgresql.Driver" 
     url = "jdbc:postgresql://"${?DB_PORT_5432_TCP_ADDR}":"${?DB_PORT_5432_TCP_PORT}"/"${?DB_NAME} 
     user = ${?DB_USERNAME} 
     password = ${?DB_PASSWORD} 
     } 
    } 
    readonly { 
     driver = "com.yourdomain.db.ExtendedPgDriver$" 
     db { 
     driver = "org.postgresql.Driver" 
     url = ${DB_READ_REPLICA_URL} 
     user = ${?DB_USERNAME} 
     password = ${?DB_PASSWORD} 
     } 
    } 
    } 
} 

Ve bu salt okunur ' 'default' ya yönlendirmek sorguya kadar senin DB sarıcı sınıfına var ya:

Ardından kaygan dosya şu şekilde görünecektir