Open-Job
🔥2022 最新的輕量級分布式任務調度系統
🎨 Open-Job 介紹
開源分布式任務調度系統,項目官方文檔地址
✨ 已實現功能點
-
定時任務基於 redis 實現,支持動態修改任務狀態,同時支持拓展其他實現方式
-
客戶端與服務端通信采用 Grpc,同時支持拓展其他通信方式
-
注冊中心支持 Nacos、Zookeeper,同時支持拓展其他注冊中心,而且支持節點動態上線下線
-
客戶端集群部署支持負載均衡,默認提供了一致性hash、隨機權重算法,支持多種容錯機制,默認提供了失敗重試、故障轉移等機制,負載均衡和容錯都支持拓展
-
任務監控報警能力支持
-
前后端分離,管理后台基於 antd-pro 搭建
-
支持多應用任務調度
🍪 快速開始
1 搭建任務管理系統
- 下載本項目
git clone https://github.com/lijunping365/Open-Job.git
- 創建數據庫表
sql 文件在 doc/open_job.sql
- 下載前端項目
git clone https://github.com/lijunping365/Open-Job-Admin.git
需安裝 node.js,
- 啟動服務端,啟動前端項目
登錄任務管理系統創建任務,之后便可以進行任務管理了
2 搭建任務執行模塊
創建任務執行模塊可按照項目中客戶端示例工程搭建
- 在任務執行項目中加入以下依賴
<dependency>
<groupId>com.saucesubfresh</groupId>
<artifactId>open-rpc-server</artifactId>
<version>1.0.6</version>
</dependency>
- 創建任務執行類並實現 JobHandler
示例1(類模式)
@Slf4j
@JobHandler(name = "job-one")
@Component
public class OpenJobHandlerOne implements OpenJobHandler {
@Override
public void handler(String params) {
log.info("JobHandlerOne 處理任務");
}
}
示例2(方法模式)
@Slf4j
@Component
public class OpenJobHandlerMethodOne{
@JobHandler(name = "job-method-one1")
public void handlerOne1(String params) {
log.info("JobHandlerOne 處理任務, 任務參數 {}", params);
}
@JobHandler(name = "job-method-one2")
public void handlerOne2(String params) {
log.info("JobHandlerOne 處理任務, 任務參數 {}", params);
}
}
❓ FAQ
有問題可以提 issues,我會及時解答
Contributing
歡迎參與項目貢獻!比如提交PR修復一個bug,或者新建 Issue 討論新特性或者變更。
Copyright and License
產品開源免費,並且將持續提供免費的社區技術支持。個人或企業內部可自由的接入和使用。如有需要可郵件聯系作者免費獲取項目授權。
- Licensed under the Apache License v2.0.
- Copyright (c) 2022-present, lijunping.
🎉收尾
-
歡迎大家的關注和使用,歡迎 star,本項目將持續更新
-
歡迎接入的公司在 登記地址 登記,登記僅僅為了產品推廣。