简介
在使用Quartz框架时,框架内的sql语句都是使用大写的表名来操作,但是在公司内统一小写并且开启了大小写敏感的情况下,Quartz就会报错。Quartz官方也不打算提供可配置的大小写选项,只是说开启数据库大小写不敏感就可以解决[1]。在很多情况下,公司内的规范都不是个人能轻易改变的,所以比较靠谱的方法就是改Quartz框架的代码。还好框架提供了足够的扩展点,让使用者可以解决这个问题。
修改sql执行类的配置
与sql执行相关的配置有tablePrefix、driverDelegateClass和lockHandler.class,其中后两项是使用新的实现替换框架内置的实现。新的实现可以直接使用Quartz框架的,只需要把类中对应的表名大写改成小写即可,可参考基于Spring Boot的示例工程[2]。不过需要注意的是目前我只使用到了基于Cron的调度功能,所以如果有使用其他实现,需要再对示例工程做一些相应的修改。
基于Spring Boot的application配置示例:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/quartz_demo
spring.datasource.username=root
spring.datasource.password=root
spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=com.nereusyi.demos.quartz.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.lockHandler.class=com.nereusyi.demos.quartz.StdRowLockSemaphore
参考资料
[1]quartz-scheduler github issues:https://github.com/quartz-scheduler/quartz/issues/31
评论
发表评论