spring - spring-boot-starter-quartz jdbc vs不同环境下的内存jobstore
问题描述
我在几个环境项目中使用 spring-boot-starter-quartz。
在本地环境中,我想使用内存 jobstore( spring.quartz.job-store-type=memory
) 在所有其他环境(preprod,prod ...)中,我想使用 jdbc jobstore( spring.quartz.job-store-type=jdbc
)
我想将所有常用属性放入默认的 application.properties 文件中,并仅覆盖本地环境属性文件(application-local.properties)中的有用属性
所以通常我会把它放在 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
Quartz 不喜欢这个配置。我面临着例外java.lang.NoSuchMethodException: No setter for property 'tablePrefix'
一个简单的解决方案包括在每个文件中重复所需的属性(我绝对不想要这个解决方案)。
我该怎么做?
解决方案
我的方法不是很好。我们可以将 jdbc jobstore 与 h2 数据库一起使用。唯一改变的是 driverDelegateClass。对于 h2,我们需要使用 driverDelegateClassspring.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
推荐阅读
- python - 使用 sys.path.append 添加多个完整路径是否可以接受,或者是否有 Pythonic 方法来解决这个问题?
- python - 向 scipy.stats.rv_continuous 添加方法,rv_frozen 的问题
- google-analytics - 如何在 Google 数据洞察中获得辅助转化?
- wdk - DbgPrint 和 DbpPrintEx 在 WinDbg 和 DbgView 中不输出任何内容
- python - Sage maker notebook 中的 Athena 查询。如何获取输出文件的位置以实现可重用性?
- javascript - 材质 UI 文本字段中需要有条件
- c++ - 使用 openMP 在向量 c++ 对象上并行化循环
- azure-devops - 如何通过 Rest API 通过一个请求批量更新多个 Azure DevOps 工作项?
- r - 在R中仅将某些行从长转换为宽
- airflow - 带有 CeleryExecutor(RMQ 代理)任务的 Airflow 1.10.15 卡在排队状态