q昨天到今天一直被quartz集群问题困扰
正常情况下集群下的多台quartz服务只有一个在工作。但是我测试的情况是每个服务都已是集群上的一个节点,数据库中也看了节点状态的记录。但是每台服务都是各干各的没有集群的效果。过程比较坎坷
网上资料都没有找到这一项说明
确定使用的数据库后,
quartz.dataSource.myDS.provider 配置数据库提供者
quartz.dataSource.myDS.connectionString 配置数据库连接字符串
quartz.jobStore.driverDelegateType 配置数据库的委托类型,这个很重要,每个数据库的语言都有些不一样,选择适合的委托类型。具体的到源码中找即可。
划重点====
还发现一个问题。在调试的时候都是正常的,但是放到 docker中出现了事务连接的问题。后来我主动引入mysql.data最新的库(8.0.19)解决了。
数据库的版本太高,导致quartz.net引入的mysql.data库不支持我可以理解。但是同样的云端数据库,本地一样去连接,不适用最新的库也没问题。
就有点朦。有可能是发布的问题,本地可能有引入操作系统中的库,docker上部署的是框架依赖配置的发布版。docker上不可能有mysql的服务组件。可能是这个问题引起的。。
更重点================================================
今天重新试了下,昨天写的纯属扯淡
网上找了一篇博客完全解决了这个问题(https://blog.csdn.net/sinat_38740436/article/details/91895416)
quartz.jobStore.misfireThreshold 这个值要小于 定时执行任务的周期,比如quartz.jobStore.misfireThreshold=60000一分钟,但是我5秒钟执行一次定时任务,这种配置在集群下是不起作用的。所以要将 quartz.jobStore.misfireThreshold的值设置小于定时任务的周期就解决了这个问题
数据库连接问题也大概有了结果,放到云服务器上,我数据路的host如果以外网的域名连接就是连接不上。但是我改成内网的ip又可以了。。。暂时就不管这个问题了。卸载了8.0.19的mysql.data.dll,用默认的库也是完美执行。应该不是库版本的问题。。在quartz.net3.07发布的 时候,8.0.19的版本还没出来
网友评论