Quartz超時重試機制

2021-09-24 23:37:48 字數 1983 閱讀 4134

高可用作為考究系統的一項重要指標,如何做到系統的高可用,談及乙個系統,這個話題就難以越過。quartz作為目前排程框架的乙個流行元件,如何保證quartz的高可用,任務排程失敗後,如何進行重試,這個也是乙個值得關注的問題。

網上看過許多涉及定時排程的開源專案,但發現其都存在乙個問題,並未對任務排程的失敗做處理,僅僅只是簡單的日誌記錄,以及手工重採。但是現實情況中,往往可能因為間歇性原因導致排程的失敗,可能重新排程一下就可以成功,那麼這時失敗重試就尤為重要。

找過網上關於quartz失敗後如何實現重試。倒是找到過集中方式。

引入第三方jar包,spring-retry。可以通過註解的方式或者整合對應的類,重寫對應的方法。個人觀點。又引入第三方jar,感覺不太理性。同時感覺過於複雜,有的業務需求不太好控制。

在quartz裡面拋異常時,自己用執行緒類睡多長時間後,進行再次呼叫。這種存在很大缺點。執行緒一直阻塞,不太優雅。當然可以用執行緒池的方式來進行實現,這種我沒嘗試過。

quartz拋異常時,獲取失敗的job,設定啟動時間,策略執行一次,這種方式,個人覺得最好,夠優雅

下面簡單介紹一下這種方式,直接貼原始碼:

public abstract class abstractquartzjob implements job

if (sysjob != null)

afterreturning(context, sysjob);

} catch (exception e)

}/**

* @description

* 在丟擲異常後

* @date 2019/6/28 15:57

* @author wangzx

* @version v1.0.20

**/protected void afterthrowing(jobexecutioncontext context, exception e, parammapsysjob) catch (schedulerexception e1)

parammap.put("mottaskstatus", "1");

parammap.put("mottaskid", sysjob.get("mottaskid"));

springutils.getbean(f051_f100_imottaskdao.class).f2106054(parammap);

} else

}/**

* @description

* 返回後

* @date 2019/6/28 16:01

* @author wangzx

* @version v1.0.20

**/protected void afterreturning(jobexecutioncontext context, parammapsysjob)

/*** 執行前

** @param context 工作執行上下文物件

* @param sysjob 系統計畫任務

*/protected void before(jobexecutioncontext context, parammapsysjob)

/*** 執行後

** @param context 工作執行上下文物件

*/protected void after(jobexecutioncontext context, exception e, parammapsysjob)

/*** 執行方法,由子類過載

** @param context 工作執行上下文物件

* @param sysjob 系統計畫任務

* @throws exception 執行過程中的異常

*/protected abstract void doexecute(jobexecutioncontext context, parammapsysjob) throws exception;

}

Dubbo的超時重試機制

我們在使用dubbo的過程中一定對於下面的配置十分熟悉 下面來解釋一下各引數的含義 1.timeout 3000 服務呼叫的超時時間,呼叫服務的過程中如果達到3秒就會報超時異常,超時異常後客戶端會進行嘗試設定的 retries 次呼叫。有乙個需要注意的地方,timeout只有在超時異常才有效,如果是...

高可用之 超時與重試機制

最重要的超時設定是網路連線 讀 寫的超時時間設定。其中最重要的超時設定是網路相關的超時設定。對於客戶端超時主要設定有讀取請求頭超時時間 讀取請求體超時時間 傳送響應超時時間 長連線超時時間。此引數要配合keepalive disable和keeplive requests一起使用。keepalive...

中斷重試機制

原文 中斷重試 中斷重試機制 public abstract class retrytemplate public retrytemplate setsleeptime int sleeptime this sleeptime sleeptime return this public intgetr...