quartz 本地有效,线上失效的问题
問題:
最近開了一個新項目,spring boot 整合了quartz,出現(xiàn)了一個問題,就是當(dāng)項目連接到本地電腦的數(shù)據(jù)庫時,一切正常。但是當(dāng)項目連接遠(yuǎn)程linux上的數(shù)據(jù)庫的時候,發(fā)現(xiàn)定時任務(wù)不靈了,也不是不執(zhí)行,比如手動執(zhí)行一次這個操作,點一下沒反應(yīng),再點一下,卻執(zhí)行兩次。
調(diào)試:
看了下源碼,整個手動執(zhí)行一次的邏輯是這樣的:
1、當(dāng)頁面點執(zhí)行一次,后臺qrtz_triggers表會插入一條新記錄,代表馬上要執(zhí)行了
2、在org.quartz.core.QuartzSchedulerThread#run方法中,有個查詢triggers的方法:
triggers = qsRsrcs.getJobStore().acquireNextTriggers…
3、查到trigger后,就去執(zhí)行,完了再刪掉那條新記錄
現(xiàn)在的問題是在第二步,查詢triggers的時候,換成本地數(shù)據(jù)庫,就能查出來,換成遠(yuǎn)程數(shù)據(jù)庫,就查不出來了(也不是一直查不出來,連續(xù)點兩次,就能查出來了,這個才是最詭異的地方)
既然是這個情況,首先排除代碼問題,因為很明顯就是因為數(shù)據(jù)庫不一樣引起的問題。
一開始還以為是因為本地數(shù)據(jù)庫只有一個服務(wù)在連,而遠(yuǎn)程數(shù)據(jù)庫,可能有多個同事在用,所以會有影響。
但是在更換多個數(shù)據(jù)庫后發(fā)現(xiàn),只要是遠(yuǎn)程數(shù)據(jù)庫,都會出現(xiàn)這種詭異現(xiàn)象。
解決
根本問題這個沒有解決,因為上面是測試環(huán)境,部署到線上環(huán)境的時候,這個問題又消失了,一切正常。等有時間了,還是要看看,總感覺沒找到問題所在。
總結(jié)
以上是生活随笔為你收集整理的quartz 本地有效,线上失效的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android的ELF文件重定位详解,包
- 下一篇: Modbus协议栈开发笔记之五:Modb