Springboot整合xxl-job實現(xiàn)動態(tài)傳參
在做項目的時候,關于定時任務框架的首選,肯定是xxl-job,那么關于xxl-job你有多少了解呢?
1、什么是xxl-job?
一、基本組成
XXL-JOB主要由調(diào)度中心和執(zhí)行器兩部分組成:
調(diào)度中心:統(tǒng)一管理任務調(diào)度平臺上的調(diào)度任務,負責觸發(fā)調(diào)度執(zhí)行,并且提供任務管理平臺。它主要負責管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請求,但自身不承擔業(yè)務代碼。
執(zhí)行器:接收調(diào)度中心的調(diào)度并且執(zhí)行,可以直接執(zhí)行也可以集成到項目中。它負責接收調(diào)度請求并執(zhí)行任務邏輯,包括執(zhí)行請求、終止請求和日志請求等。
二、特點與優(yōu)勢
簡單易用:XXL-JOB提供了友好的Web界面,支持通過Web界面進行任務的增刪改查,同時也支持通過API接口進行任務管理。用戶可以通過簡單的操作完成任務的調(diào)度和管理。
動態(tài)管理:支持動態(tài)修改任務狀態(tài)、啟動/停止任務以及終止運行中任務,所有操作都會實時生效。
高可用性:調(diào)度中心和執(zhí)行器都支持集群部署,可保證調(diào)度和執(zhí)行的高可用性。即使某個節(jié)點出現(xiàn)故障,也能自動切換到其他節(jié)點繼續(xù)執(zhí)行任務。
彈性擴容縮容:一旦有新執(zhí)行器機器上線或者下線,下次調(diào)度時將會重新分配任務,實現(xiàn)彈性擴容縮容。
豐富的路由策略:執(zhí)行器集群部署時提供多種路由策略,包括第一個、最后一個、輪詢、隨機、一致性HASH等,以滿足不同場景下的需求。
故障轉(zhuǎn)移:如果執(zhí)行器集群中某一臺機器故障,將會自動Failover切換到一臺正常的執(zhí)行器發(fā)送調(diào)度請求,確保任務能夠正常執(zhí)行。
執(zhí)行失敗查看日志:對于執(zhí)行失敗的任務,可以查看詳細的日志信息,方便用戶進行問題排查和修復。
支持郵件報警:當任務執(zhí)行失敗時,XXL-JOB支持發(fā)送郵件通知相關人員,以便及時處理異常情況。
三、應用場景
XXL-JOB適用于各種需要定時執(zhí)行任務或?qū)崟r處理任務的場景,如:
定時發(fā)送郵件:通過XXL-JOB可以定時發(fā)送郵件通知相關人員。
定時生成報表:可以定時生成各類業(yè)務報表,供相關人員進行分析和決策。
定時清理數(shù)據(jù):可以定時清理過期或無效的數(shù)據(jù),確保數(shù)據(jù)庫的整潔和高效運行。
實時數(shù)據(jù)采集:可以實時采集各類業(yè)務數(shù)據(jù),并進行處理和分析。
實時消息推送:可以實時推送各類業(yè)務消息給用戶或第三方系統(tǒng)。
四、與其他任務調(diào)度框架的比較
與Quartz等傳統(tǒng)的任務調(diào)度框架相比,XXL-JOB具有以下優(yōu)勢:
學習成本低:XXL-JOB提供了可視化的Web界面和豐富的文檔支持,降低了學習成本。
操作簡便:通過Web界面可以方便地進行任務的創(chuàng)建、編輯、刪除和查詢等操作。
負載均衡:XXL-JOB通過執(zhí)行器實現(xiàn)協(xié)同分配式運行任務,充分發(fā)揮集群優(yōu)勢,實現(xiàn)了負載均衡。
2、xxl-job如何動態(tài)傳參?
- 通過任務參數(shù)字段
在XXL-JOB的任務管理界面,每個任務都有一個“任務參數(shù)”字段。你可以在這個字段中填寫需要傳遞給執(zhí)行器的參數(shù)。這些參數(shù)通常以JSON、鍵值對或其他格式編寫,具體取決于你的執(zhí)行器如何解析這些參數(shù)。
例如,你可以在“任務參數(shù)”字段中填寫:
{
"param1": "value1",
"param2": "value2"
}
然后在執(zhí)行器的任務處理邏輯中,通過某種方式(如Jackson庫)解析這個JSON字符串,獲取到具體的參數(shù)值。
- 通過自定義參數(shù)傳遞
XXL-JOB支持通過調(diào)度中心傳遞自定義參數(shù)給執(zhí)行器。你可以在創(chuàng)建或編輯任務時,在“GLUE源碼”或“Bean模式”下編寫代碼,通過XxlJobHelper.getXxlJobContext()獲取到當前的任務上下文,然后從上下文中提取出自定義參數(shù)。
例如,在GLUE源碼模式下,你可以這樣編寫代碼:
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.logger.XxlJobLogger;
import com.xxl.job.core.util.XxlJobHelper;
import java.util.Map;
@XxlJob("demoJobHandler")
public class DemoJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
// 獲取任務上下文
Map<String, Object> context = XxlJobHelper.getXxlJobContext().getCustomParam();
// 從上下文中提取參數(shù)
String customParam1 = (String) context.get("customParam1");
String customParam2 = (String) context.get("customParam2");
// 執(zhí)行任務邏輯
XxlJobLogger.log("customParam1: " + customParam1 + ", customParam2: " + customParam2);
return ReturnT.SUCCESS;
}
}
但是,請注意,上面的代碼示例并不完全準確,因為XxlJobHelper.getXxlJobContext().getCustomParam()方法可能并不存在(具體取決于XXL-JOB的版本和你的配置)。實際上,你可能需要通過其他方式獲取自定義參數(shù),例如通過任務參數(shù)字段傳遞一個JSON字符串,并在執(zhí)行器代碼中解析這個字符串。
通過全局參數(shù)配置
XXL-JOB還支持全局參數(shù)配置,這些參數(shù)可以在調(diào)度中心的全局配置中設置,并在執(zhí)行器啟動時通過配置文件或命令行參數(shù)等方式傳遞給執(zhí)行器。然而,這種方式通常用于傳遞一些不變的全局配置信息,而不是動態(tài)的任務參數(shù)。通過API接口傳遞
如果你的應用場景需要更加靈活和動態(tài)的參數(shù)傳遞方式,你可以考慮通過API接口來觸發(fā)任務,并在API請求中傳遞參數(shù)。XXL-JOB提供了RESTful API接口,你可以通過HTTP請求來觸發(fā)任務,并在請求體中傳遞參數(shù)。
到此這篇關于Springboot整合xxl-job實現(xiàn)動態(tài)傳參 的文章就介紹到這了,更多相關Springboot xxl-job動態(tài)傳參 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java 數(shù)據(jù)結(jié)構(gòu)進階二叉樹題集上
二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結(jié)構(gòu)。本文將帶你通過實際題目來熟練掌握2022-04-04
java實現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法詳解
這篇文章主要介紹了java實現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法,結(jié)合實例形式詳細分析了java word文檔轉(zhuǎn)PDF相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-09-09
日常開發(fā)中,我們很多時候需要用到Java?8的Lambda表達式,它允許把函數(shù)作為一個方法的參數(shù),讓我們的代碼更優(yōu)雅、更簡潔。所以整理了一波工作中常用的Lambda表達式??赐暌欢〞袔椭?/div> 2023-03-03
Java實現(xiàn)JSON與XML相互轉(zhuǎn)換的簡明教程
Java實現(xiàn)復雜數(shù)據(jù)結(jié)構(gòu)(如嵌套對象、數(shù)組)在 JSON 與 XML 之間的相互轉(zhuǎn)換,可以使用 Jackson 和 Jackson XML 擴展庫來完成,Jackson 是一個流行的 JSON 處理庫,通過 Jackson 的 XML 擴展庫,可以實現(xiàn) JSON 和 XML 之間的轉(zhuǎn)換,需要的朋友可以參考下2024-08-08
解析Java中所有錯誤和異常的父類java.lang.Throwable
這篇文章主要介紹了Java中所有錯誤和異常的父類java.lang.Throwable,文章中簡單地分析了其源碼,說明在代碼注釋中,需要的朋友可以參考下2016-03-03
SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源)
本文主要介紹了SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
Mybatis批量插入數(shù)據(jù)返回主鍵的實現(xiàn)
這篇文章主要介紹了Mybatis批量插入數(shù)據(jù)返回主鍵的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
Java commons-httpclient如果實現(xiàn)get及post請求
這篇文章主要介紹了Java commons-httpclient如果實現(xiàn)get及post請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09最新評論

