問題描述
上一篇Docker 部署xxl-job 報錯:xxl-rpc remoting error(connect timed out), for url : xxxxxx - 這行代碼沒Bug - 博客園 (cnblogs.com),解決了方式是把執行器自動注冊改為手動錄入,后面跑任務的時候發現超過十分鍾的任務會自動失敗,但是任務還在跑,只是調度中心這邊日志已經是調度失敗了,查看失敗日志為:“任務結果丟失,標記失敗”。如下圖
解決思路
仔細看了一下任務執行及日志回調的源碼,也打了日志,發現並沒有問題,當任務跑了十分鍾后,執行器的線程沒有停止還在繼續跑着,但是調度中心的日志已經是失敗了。
后面想起來在調度中心啟動的時候,創建一個線程來處理任務結果丟失。
JobCompleteHelper.getInstance().start();
進入start()
方法,里面創建了兩個線程,查看monitorThread
線程的run
方法,
最終解決
把執行器手動錄入改為自動注冊,然后在執行器的配置文件里把地址加上,就解決了問題。
xxl:
job:
executor:
address: http://172.17.0.1:${server.port}/