Grails 3 中的动态 Quartz 配置
Dynamic Quartz Configuration in Grails 3
在 Grails 2 中,我们的 Config.groovy
文件中有以下代码块。 ConfigurationManagement
class 在配置管理数据库中执行运行时查找以确定 quartz.autoStartup
参数应该是 true
还是 false
。我们还使用类似的配置来加载额外的 Quartz 属性。
quartz {
def autoStartupOnTheseServers = ConfigurationManagement.getValue("myApp.quartz.autoStartupOnTheseServers", "").split(",")
if ( autoStartupOnTheseServers.any { it.trim().toUpperCase() == hostName.toUpperCase() } ) {
autoStartup = true
}
else {
autoStartup = false
}
// Default for clustering (jdbcStore) has to be "false" so the app will run locally.
// Clustering (jdbcStore) will be true for DEV, TEST, QA, and PROD (set by Configuartion Management).
jdbcStore = ConfigurationManagement.getValue("myApp.quartz.jdbcStore", "false").toBoolean()
// don't set the props if not enabling quartz clustering...causes an exception.
if(jdbcStore == true) { props(quartzProps) }
}
在 Grails 3 中,application.groovy
中使用的类似代码不起作用,并且没有任何我可以为 application.yml
找到的条件函数工具。 Grails 3 中有什么方法可以进行类似的动态配置吗?
在 Grails 3 中,您似乎无法直接设置这些值,但您可以声明一个局部变量并使用它来设置 属性。因此,对于我上面的示例,以下工作:
def extServerList = ConfigurationManagement.getValue("myApp.quartz.autoStartupOnTheseServers", "").split(",")
def extAutoStartup = extServerList.any { it.trim().toUpperCase() == hostName.toUpperCase() }
def extJdbcStore = ConfigurationManagement.getValue("myApp.quartz.jdbcStore", "false").toBoolean()
quartz {
autoStartupOnTheseServers = extServerList
autoStartup = extAutoStartup
jdbcStore = extJdbcStore
}
在 Grails 2 中,我们的 Config.groovy
文件中有以下代码块。 ConfigurationManagement
class 在配置管理数据库中执行运行时查找以确定 quartz.autoStartup
参数应该是 true
还是 false
。我们还使用类似的配置来加载额外的 Quartz 属性。
quartz {
def autoStartupOnTheseServers = ConfigurationManagement.getValue("myApp.quartz.autoStartupOnTheseServers", "").split(",")
if ( autoStartupOnTheseServers.any { it.trim().toUpperCase() == hostName.toUpperCase() } ) {
autoStartup = true
}
else {
autoStartup = false
}
// Default for clustering (jdbcStore) has to be "false" so the app will run locally.
// Clustering (jdbcStore) will be true for DEV, TEST, QA, and PROD (set by Configuartion Management).
jdbcStore = ConfigurationManagement.getValue("myApp.quartz.jdbcStore", "false").toBoolean()
// don't set the props if not enabling quartz clustering...causes an exception.
if(jdbcStore == true) { props(quartzProps) }
}
在 Grails 3 中,application.groovy
中使用的类似代码不起作用,并且没有任何我可以为 application.yml
找到的条件函数工具。 Grails 3 中有什么方法可以进行类似的动态配置吗?
在 Grails 3 中,您似乎无法直接设置这些值,但您可以声明一个局部变量并使用它来设置 属性。因此,对于我上面的示例,以下工作:
def extServerList = ConfigurationManagement.getValue("myApp.quartz.autoStartupOnTheseServers", "").split(",")
def extAutoStartup = extServerList.any { it.trim().toUpperCase() == hostName.toUpperCase() }
def extJdbcStore = ConfigurationManagement.getValue("myApp.quartz.jdbcStore", "false").toBoolean()
quartz {
autoStartupOnTheseServers = extServerList
autoStartup = extAutoStartup
jdbcStore = extJdbcStore
}