Scala 在运行时重新加载postgres数据库配置
我使用的是greenplum集群,您只能向主服务器提交查询。 我在application.conf中有主节点ip。 但由于高可用性等原因,主节点的IP会切换到不同的机器 application.conf条目:Scala 在运行时重新加载postgres数据库配置,scala,akka,Scala,Akka,我使用的是greenplum集群,您只能向主服务器提交查询。 我在application.conf中有主节点ip。 但由于高可用性等原因,主节点的IP会切换到不同的机器 application.conf条目: database = { connectionPool = "HikariCP" dataSourceClass = "org.postgresql.ds.PGSimpleDataSource" properties = { serverName = "103.10.1
database = {
connectionPool = "HikariCP"
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
serverName = "103.10.11.6"
portNumber = "5432"
databaseName = "test"
currentSchema = "public"
user = "user"
password = "user123"
}
numThreads = 10
}
现在可以使用以下方式加载:
val db = Database.forConfig("database")
我可以捕获ConnectionException或ping机器并识别当前主机的IP
但是,如何在配置中重写serverName
变量并在运行时重新加载
这个设计好吗 您应该将域名而不是ip地址设置为
serverName
。此域记录必须指向主记录。
这种方法将大多数高可用性问题留在网络级别,不会泄露给应用程序代码。不幸的是,网络团队有一些规则要求应用程序团队这样做。我提出了同样的方法,但得到了这个答案+1因为这也是我首选的方法。然后每次只需创建一个
数据库的新实例即可。当然,前一个应该正确关闭。