spring boot starter quartz jdbc与不同环境下的内存jobstore之比较

aiazj4mn  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(416)

我在几个环境项目中使用SpringBootStarterQuartz。
在本地环境中,我想使用内存jobstore( spring.quartz.job-store-type=memory )在所有其他env(preprod,prod…)中,我想使用jdbc jobstore( spring.quartz.job-store-type=jdbc )
我想在default application.properties文件中放入所有公共属性,并在local env properties文件(application local.properties)中只重写usefulls属性
所以通常我会把它放在application.properties中

spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=never
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.jobStore.isClustered=false

以及application-local.properties

spring.quartz.jdbc.initialize-schema=always
spring.quartz.job-store-type=MEMORY

石英不喜欢这个配置。我面临着这样的例外 java.lang.NoSuchMethodException: No setter for property 'tablePrefix' 一个简单的解决方案是在每个文件中重复所需的属性(我绝对不想要这个解决方案)。
不然我怎么办?

omvjsjqw

omvjsjqw1#

我的方法不好。我们可以使用jdbc jobstore和h2数据库。唯一改变的是driverdelegateclass。对于h2,我们需要使用driverdelegateclass spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate. 因此,此配置将与h2数据库一起使用:

spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.jobStore.isClustered=false

相关问题