輕量級分布式延時(shí)任務(wù)處理組件easyTask-L-API介紹篇
easyTask-L的API設(shè)計(jì)比較簡潔、易于理解和使用。主要涉及環(huán)形隊(duì)列類、配置類、任務(wù)超類以及監(jiān)控類四個(gè)方面。下面逐一做簡單介紹。本文只對比較重要的API做介紹,其他API還望讀者自行探索
環(huán)形隊(duì)列(AnnularQueue)
環(huán)形隊(duì)列類設(shè)計(jì)為單例模式。通過AnnularQueue.getInstance();獲取。
1、void start(EasyTaskConfig config) throws Exception:
啟動(dòng)easyTask-L,包括環(huán)形隊(duì)列時(shí)鐘、集群等一系列工作。且只需要在系統(tǒng)啟動(dòng)時(shí)調(diào)用一次即可。切勿重復(fù)調(diào)用。參數(shù)config是必須的,系統(tǒng)將此配置參數(shù)實(shí)例作為當(dāng)前工作的參數(shù)。如果啟動(dòng)失敗將拋出異常。
2、String submit(Task task) throws Exception:
向環(huán)形隊(duì)列中提交新任務(wù)。提交失敗則拋出異常
3、String submitAllowWait(Task task) throws Exception
向環(huán)形隊(duì)列中提交新任務(wù)。提交失敗則拋出異常。如果環(huán)形隊(duì)列還沒有啟動(dòng)成功,則任務(wù)不拋出異常,等待啟動(dòng)后再正式提交任務(wù)。
配置類(EasyTaskConfig)
前面說了環(huán)形隊(duì)列(集群)啟動(dòng)時(shí)需要給一個(gè)啟動(dòng)配置參數(shù)。因?yàn)檫@是系統(tǒng)必須的東西。
1、String zkAddress;
集群zookeeper地址配置。必填 如:127.0.0.1:2181
2、int backupCount ;
任務(wù)備份數(shù)量,默認(rèn)2。最大2,超過部分無效
3、String taskStorePath;
自定義任務(wù)本地存儲(chǔ)路徑。必填
4、int sQLlitePoolSize
sqlite連接池大小設(shè)置。默認(rèn)cpu數(shù)的兩倍
5、int serverPort
設(shè)置當(dāng)前節(jié)點(diǎn)Netty服務(wù)端口號。默認(rèn)2020
6、int timeOut
設(shè)置集群通信調(diào)用超時(shí)時(shí)間。默認(rèn)3秒
7、int loseTimeOut
ZK節(jié)點(diǎn)信息失效超時(shí)時(shí)間。默認(rèn)超過60s就判斷為失效節(jié)點(diǎn),任何其他節(jié)點(diǎn)可刪除掉
8、int deadTimeOut
ZK節(jié)點(diǎn)信息死亡超時(shí)時(shí)間。默認(rèn)超過30s就判斷為Leader失效節(jié)點(diǎn),其Follow節(jié)點(diǎn)可進(jìn)入選舉新Leader
9、int heartBeat
節(jié)點(diǎn)對zk的心跳頻率。默認(rèn)2s一次
10、int tryCount
集群節(jié)點(diǎn)之間通信失敗重試次數(shù)。默認(rèn)2次
11、int clearScheduleBakTime
清理任務(wù)備份表中失效的leader備份。默認(rèn)1小時(shí)一次。單位毫秒
12、ExecutorService clusterPool
集群公用程池。暫時(shí)不用設(shè)置
13、ExecutorService dispatchs
環(huán)形隊(duì)列任務(wù)調(diào)度線程池。默認(rèn)為cpu核心數(shù)
14、ExecutorService workers
環(huán)形隊(duì)列工作任務(wù)線程池。默認(rèn)為cpu核心數(shù)2倍
任務(wù)超類(Task)
1、void setEndTimestamp(long endTimestamp)
設(shè)置任務(wù)未來的執(zhí)行時(shí)間戳。如果你設(shè)置的是一個(gè)過去的時(shí)間戳,則代表任務(wù)立即執(zhí)行。適用于單次任務(wù)以及周期性任務(wù)
2、void setTaskType(TaskType taskType)
設(shè)置任務(wù)類型。單次任務(wù)或周期任務(wù)
3、void setUnit(TimeUnit unit)
設(shè)置周期任務(wù)的執(zhí)行周期時(shí)間單位。支持天、小時(shí)、分、秒
4、void setParam(Map<String,String> param)
設(shè)置當(dāng)前任務(wù)攜帶的執(zhí)行參數(shù)。僅支持字符串類型。其他類型都可以轉(zhuǎn)化為字符串
環(huán)形隊(duì)列監(jiān)控(AnnularQueueMonitor)
1、int getTaskInAnnularQueueQty()
獲取環(huán)形隊(duì)列中等待被觸發(fā)執(zhí)行的任務(wù)數(shù)
2、Map<String, String> getDispatchsPoolInfo()
獲取分派任務(wù)線程池信息。包括:taskQty隊(duì)列中等待執(zhí)行的任務(wù)數(shù),completedQty已經(jīng)執(zhí)行完成的任務(wù)數(shù),activeQty正在執(zhí)行任務(wù)的線程數(shù),coreSize設(shè)置的核心線程數(shù)
3、Map<String, String> getWorkersPoolInfo()
獲取執(zhí)行任務(wù)線程池信息。包括:taskQty隊(duì)列中等待執(zhí)行的任務(wù)數(shù),completedQty已經(jīng)執(zhí)行完成的任務(wù)數(shù),activeQty正在執(zhí)行任務(wù)的線程數(shù),coreSize設(shè)置的核心線程數(shù)
集群監(jiān)控(ClusterMonitor)
1、String getCurrentNodeInfo()
獲取當(dāng)前節(jié)點(diǎn)信息
2、Map<String, Map<String, List>> getDBTraceInfoByTaskId(String taskId)
獲取任務(wù)的數(shù)據(jù)存儲(chǔ)跟蹤信息。因?yàn)樯婕暗皆L問數(shù)據(jù)庫,不建議頻繁調(diào)用
3、ZKNode getCurrentZKNodeInfo()
獲取當(dāng)前節(jié)點(diǎn)在zk上的注冊信息
數(shù)據(jù)存儲(chǔ)監(jiān)控(DBMonitor)
1、Map<String,List> getInfoByTaskId(String taskId)
獲取任務(wù)在本節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)信息

浙公網(wǎng)安備 33010602011771號