如何在 grails 3 中配置 quartz 插件?
How to configure quartz plugin in grails 3?
最近我尝试配置我的 grails 应用程序以与 quartz 调度程序一起使用。不幸的是,我未能配置 JDBC 工作商店。 quartz 插件似乎忽略了 quartz.properties
文件,其中 table 前缀定义为 Z_STAFF_SCHEDULER
。应用程序启动失败并出现异常:
Caused by: org.springframework.scheduling.SchedulingException: Could
not start Quartz Scheduler; nested exception is
org.quartz.SchedulerConfigException: Failure occured during job
recovery. [See nested exception:
org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row
lock: Table 'testing.qrtz_locks' doesn't exist [See nested exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table
'testing.qrtz_locks' doesn't exist]]
这里是application.groovy
中的相关代码:
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
environments {
test {
quartz {
jdbcStore = false
autoStartup = false
}
}
}
grails.config.locations = ["classpath:conf/quartz.properties"]
这是我在 quartz.properties
中的配置:
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = StaffScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = development
org.quartz.jobStore.tablePrefix = Z_STAFF_SCHEDULER_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.development.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.development.URL = jdbc:mysql://localhost:3306/testing?useSSL=false
org.quartz.dataSource.development.user = testing
org.quartz.dataSource.development.password = nopass
org.quartz.dataSource.development.maxConnections = 10
org.quartz.dataSource.development.validationQuery = select 1
有人可以帮助我吗?
我正在使用 grails 3.2.3 和 quartz 插件 2.0.9
我终于自己找到了解决办法。 quartz 插件的每个选项都可以在 application.yml
本身中配置。有关受支持参数的列表,请参阅 http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/。
您不需要任何其他文件。这是我的 application.yml
的摘录作为示例:
quartz:
autoStartup: true
jdbcStore: true
scheduler:
instanceName: 'staff_scheduler'
instanceId: 'AUTO'
threadPool:
class: 'org.quartz.simpl.SimpleThreadPool'
threadCount: 25
threadPriority: 5
jobStore:
misfireThreshold: 60000
class: 'org.quartz.impl.jdbcjobstore.JobStoreTX'
driverDelegateClass: 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'
useProperties: false
dataSource: 'development'
tablePrefix: 'Z_STAFF_SCHEDULER_'
isClustered: true
clusterCheckinInterval: 20000
dataSource:
development:
driver: 'com.mysql.jdbc.Driver'
URL: 'jdbc:mysql://localhost:3306/testing?useSSL=false'
user: 'testing'
password: 'nopass'
maxConnections: 28
validationQuery: 'select 1'
最近我尝试配置我的 grails 应用程序以与 quartz 调度程序一起使用。不幸的是,我未能配置 JDBC 工作商店。 quartz 插件似乎忽略了 quartz.properties
文件,其中 table 前缀定义为 Z_STAFF_SCHEDULER
。应用程序启动失败并出现异常:
Caused by: org.springframework.scheduling.SchedulingException: Could not start Quartz Scheduler; nested exception is org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table 'testing.qrtz_locks' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'testing.qrtz_locks' doesn't exist]]
这里是application.groovy
中的相关代码:
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
environments {
test {
quartz {
jdbcStore = false
autoStartup = false
}
}
}
grails.config.locations = ["classpath:conf/quartz.properties"]
这是我在 quartz.properties
中的配置:
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = StaffScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = development
org.quartz.jobStore.tablePrefix = Z_STAFF_SCHEDULER_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.development.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.development.URL = jdbc:mysql://localhost:3306/testing?useSSL=false
org.quartz.dataSource.development.user = testing
org.quartz.dataSource.development.password = nopass
org.quartz.dataSource.development.maxConnections = 10
org.quartz.dataSource.development.validationQuery = select 1
有人可以帮助我吗?
我正在使用 grails 3.2.3 和 quartz 插件 2.0.9
我终于自己找到了解决办法。 quartz 插件的每个选项都可以在 application.yml
本身中配置。有关受支持参数的列表,请参阅 http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/。
您不需要任何其他文件。这是我的 application.yml
的摘录作为示例:
quartz:
autoStartup: true
jdbcStore: true
scheduler:
instanceName: 'staff_scheduler'
instanceId: 'AUTO'
threadPool:
class: 'org.quartz.simpl.SimpleThreadPool'
threadCount: 25
threadPriority: 5
jobStore:
misfireThreshold: 60000
class: 'org.quartz.impl.jdbcjobstore.JobStoreTX'
driverDelegateClass: 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'
useProperties: false
dataSource: 'development'
tablePrefix: 'Z_STAFF_SCHEDULER_'
isClustered: true
clusterCheckinInterval: 20000
dataSource:
development:
driver: 'com.mysql.jdbc.Driver'
URL: 'jdbc:mysql://localhost:3306/testing?useSSL=false'
user: 'testing'
password: 'nopass'
maxConnections: 28
validationQuery: 'select 1'