使用xxl-job-executor-go 接入xxl-job實現定時任務調度

定時任務是軟件開發中很常見的一種處理業務的機制,xxl-job是近些年比較火的定時任務調用組件,其采用java 實現,是一個高可用,分布式調用的組件,還支持多種定時任務有關的特性,不僅能輕易的用java 客戶端接入,還提供了rest-api 供非java語言的客戶端接入。
在這里插入圖片描述

1.xxl-job-executor-go 就是go實現了 xxl-job執行器相關協議

1.1用法

從xxl-job的git倉庫拉取xxl-job源碼
https://github.com/xuxueli/xxl-job/

從doc 下獲取初始的xxl-job數據庫的腳本,并執行
在這里插入圖片描述
修改xxl-job-admin相關數據庫配置,如賬號密碼等,其他xxl-job-admin,也可以以docker啟動,官方提供了鏡像。

啟動完訪問xxl-job-admin控制臺,賬號密碼admin/123456
在這里插入圖片描述

1.2 配置新的執行器

在這里插入圖片描述
Appname:要求唯一,需要和客戶端的執行器配置保持一致,
注冊方式:可以選擇或手動,自動的話,客戶端啟動后會將本機執行器的地址注冊到xxl-job中(多網卡可能會存在一定問題,可以換成說手動),

1.3 xxl-job 調度中心集群啟動

xxl-job能啟動多個實例,只需要連接到同一個db,同時保證時針同步,在多個xxl-job-admin的實例上加一層反向代理,如使用nginx。

3.在go項目中引入xxl-job-executor-go

go get github.com/xxl-job/xxl-job-executor-go
func xxl_job() {exec := xxl.NewExecutor(xxl.ServerAddr("http://127.0.0.1:8080/xxl-job-admin"), // xxl-job控制臺地址xxl.AccessToken("default_token"), //請求令牌(默認為空)xxl.ExecutorIp("127.0.0.1"),      //可自動獲取xxl.ExecutorPort("9999"),         //默認9999(非必填)xxl.RegistryKey("golang-jobs"),   //執行器名稱,和后臺新建的執行器的appName保持一致xxl.SetLogger(&logger{}),         //自定義日志)exec.Init()exec.Use(customMiddleware)//設置日志查看handlerexec.LogHandler(customLogHandle)//注冊任務handlerexec.RegTask("task.test", task.Test) //regtask的第一個參數對應xxl-job-admin控制臺的任務的jobhandlerexec.RegTask("task.test2", task.Test2)exec.RegTask("task.panic", task.Panic)log.Fatal(exec.Run())
}// 自定義日志處理器
func customLogHandle(req *xxl.LogReq) *xxl.LogRes {return &xxl.LogRes{Code: xxl.SuccessCode, Msg: "", Content: xxl.LogResContent{FromLineNum: req.FromLineNum,ToLineNum:   2,LogContent:  "這個是自定義日志handler",IsEnd:       true,}}
}// xxl.Logger接口實現
type logger struct{}func (l *logger) Info(format string, a ...interface{}) {fmt.Println(fmt.Sprintf("自定義日志 - "+format, a...))
}func (l *logger) Error(format string, a ...interface{}) {log.Println(fmt.Sprintf("自定義日志 - "+format, a...))
}// 自定義中間件
func customMiddleware(tf xxl.TaskFunc) xxl.TaskFunc {return func(cxt context.Context, param *xxl.RunReq) string {log.Println("I am a middleware start")res := tf(cxt, param)log.Println("I am a middleware end")return res}
}```
![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/c4908e06b3d648fc9d2cbe595b78f4d0.png)
![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/d310fae029b4477488718cbd5a3ae575.png)
![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/8e29b176aafe4116901f8c7050830b53.png)
可以在后臺查看調度結果
[http://www.xuxueli.com/xxl-job/](http://www.xuxueli.com/xxl-job/)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15222.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot高級原理詳解

今日內容: 理解SpringBoot自動化配置源碼理解SpringBoot健康監控 1 SpringBoot自動化配置原理 01-SpringBoot2高級-starter依賴管理機制 目的:通過依賴能了解SpringBoot管理了哪些starter講解: 通過依賴 spring-boot-dependencies 搜索 …

【C++】<知識點> 標準模板庫STL(上)

文章目錄 一、STL---string類 1. 常用構造函數 2. 常用操作 3. 字符串流處理 二、STL---容器 1. STL及基本概念 2. 順序容器簡介 3. 關聯容器簡介 4. 容器適配器簡介 5. 常用成員函數 三、STL---迭代器 1. 普通迭代器 2. 雙向、隨機訪問迭代器 3. 不同容器的迭代器…

數據結構:二叉樹與樹

一 樹的基本概念: 1.樹的形狀: 2.樹的定義: 樹是一種非線性的數據結構,它是n(n > 0)個結點的有限集。當n 0時,稱為空樹。在任意一棵非空樹中應滿足: 2.1 有且僅有一個特定的稱為根的結點。 2.2 當n …

棧——順序存儲

#include<stdio.h> #define MaxSize 10 //棧的所有操作時間復雜度都是O(1) //定義 typedef struct{int data[MaxSize];int top; //棧頂指針&#xff0c;永遠指向棧頂元素 }SqStack;//初始化&#xff0c;使棧頂指針指向-1 void InitStack(SqStack &S){S.top-1; }…

k8s二進制安裝與部署

目錄 一、實驗目的 二、實驗環境 三、實驗步驟 3.1 操作系統初始化配置 3.2 部署 docker引擎 3.3 部署 etcd 集群 3.3.1 在 master01 節點上操作 ?3.3.2 在 node01 節點上操作 3.3.3 在 node02 節點上操作 3.4 部署 Master 組件 3.4.1 在 mast…

Softing工業推出新品edgeGate:一款用于工業邊緣和云應用的硬件網關

2024年4月17日&#xff08;哈爾&#xff09;&#xff0c;Softing工業自動化在2024年漢諾威工業博覽會上首次展示了新品edgeGate。該產品是一個無需維護的硬件物聯網網關解決方案&#xff0c;可將生產數據從PLC和數控機床控制器傳輸至工業邊緣及物聯網云平臺。 &#xff08;edge…

MiniMax Golang2輪面試,期望薪資25K

一面 1、自我介紹 2、簡單介紹一下你們成立了這個finance的財務中臺之后&#xff0c;整體的服務架構是怎么樣的嗎&#xff1f; 3、就你提到的預算池項目&#xff0c;展開說說背景&#xff0c;以及解決了怎么樣的問題&#xff1f; 4、為什么采用針對T-1訂單的異步計算方案&a…

jmeter線程組(下篇)

線程組 線程組作為JMeter測試計劃的核心組件之一&#xff0c;對于模擬并發用戶的行為至關重要。線程組元件是整個測試計劃的入口&#xff0c;所有的取樣器和控制器必須放置在線程組下。 可以將線程組視為一個虛擬用戶池&#xff0c;其中每個線程可被理解為一個虛擬用戶&#x…

(Java面試題分享)萬里長征-03-搜狐

萬里長征-03-搜狐 ? 以下內容基于GPT-4o模型 問題 1.LeetCode103 二叉樹的鋸齒形層序遍歷 103. 二叉樹的鋸齒形層序遍歷 - 力扣&#xff08;LeetCode&#xff09; 2.LeetCode5 最長回文子串 5. 最長回文子串 - 力扣&#xff08;LeetCode&#xff09; 3.Kafka為何那么快 …

java如何創建Class對象?

請思考一個問題&#xff1a;如果你想在java程序運行時獲得某個類的信息&#xff0c;你會怎么辦&#xff1f; 首先要獲得該類的Class對象&#xff0c;然后才可以通過Class類中的方法來獲得與該Class對象相對應的類的信息。 有3種方法來獲得類的Class對象&#xff1a; 1.用Cla…

【數據結構與算法 | 基礎篇】[棧專題]力扣20,150

1. 力扣20 : 有效的符號 (1). 題 給定一個只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判斷字符串是否有效。 有效字符串需滿足&#xff1a; 左括號必須用相同類型的右括號閉合。左括號必須以正確的順序閉合。每個…

初學者都能掌握的操作符(中)

&#xff08;1&#xff09;位操作符&#xff08;& | ^&#xff09; &&#xff1a;&#xff08;按二進制位“與”&#xff09; 也就是兩個數的每一位二進制數按照 “與” 的算法&#xff0c;如下&#xff1a; int a 3 ,b 5 ; c a & b; 我們首先寫出a和b的二進…

退格(刪除)鍵

題目描述 用 來表示退格鍵&#xff0c;遇到 來表示退格鍵&#xff0c;遇到 來表示退格鍵&#xff0c;遇到就刪除上一位字符&#xff08;如果有&#xff09; 在鍵盤上從左到右一次輸入一串字符串&#xff0c;請輸出最終字符的個數。注&#xff1a;退格鍵不會出現在最終的剩余字…

5.23.12 計算機視覺的 Inception 架構

1. 介紹 分類性能的提升往往會轉化為各種應用領域中顯著的質量提升&#xff0c;深度卷積架構的架構改進可用于提高大多數其他計算機視覺任務的性能&#xff0c;這些任務越來越依賴于高質量的學習視覺特征。在 AlexNet 功能無法與手工設計、制作的解決方案競爭的情況下&#xf…

如何評價劉強東說“業績不好的人不是我兄弟”

在近日的一次京東管理層會議上&#xff0c;創始人劉強東以不容置疑的口吻表明了對公司文化的堅定態度&#xff1a;“凡是長期業績不好&#xff0c;從來不拼搏的人&#xff0c;不是我的兄弟。”這句話不僅是對那些工作表現不佳的員工的直接警告&#xff0c;也透露出京東在追求業…

three.js能實現啥效果?看過來,這里都是它的菜(08)

在Three.js中實現旋轉動畫的原理是通過修改對象的旋轉屬性來實現的&#xff0c;通常使用渲染循環&#xff08;render loop&#xff09;來更新對象的旋轉狀態&#xff0c;從而實現動畫效果。 具體的原理包括以下幾個步驟&#xff1a; 創建對象&#xff1a;首先創建一個需要旋轉…

AIGC-風格遷移-style Injection in Diffusion-CVPR2024HighLight-論文精度

Style Injection in Diffusion: A Training-free Approach for Adapting Large-scale Diffusion Models for Style Transfer-CVPR2024HighLight 代碼&#xff1a;https://github.com/jiwoogit/StyleID 論文&#xff1a;https://jiwoogit.github.io/StyleID_site/ 為了解決風格遷…

python3.12虛擬環境下ModuleNotFoundError: No module named ‘distutils‘的解決辦法

python3.12下面venv虛擬環境&#xff0c;安裝pwntools&#xff0c;運行Ropgadget提示&#xff1a;ModuleNotFoundError: No module named distutils’的解決辦法 (py3xt) :~/py3/bin$ ROPgadget Traceback (most recent call last):File "/home/a24/py3xt/bin/ROPgadget…

你真的會使用Vue3的onMounted鉤子函數嗎?Vue3中onMounted的用法詳解

目錄 一、onMounted的前世今生 1.1、onMounted是什么 1.2、onMounted在vue2中的前身 1.2.1、vue2中的onMounted 1.2.2、Vue2與Vue3的onMounted對比 1.3、vue3中onMounted的用法 1.3.1、基礎用法 1.3.2、順序執行異步操作 1.3.3、并行執行多個異步操作 1.3.4、執行一次…

Rust腐蝕怎么用服務器一鍵開服聯機教程

1、進入控制面板 首次登陸需要點擊下方重置密碼&#xff0c;如何再點擊登錄面板&#xff0c;點擊后會跳轉到登錄頁面&#xff0c;輸入用戶名和密碼登錄即可 2、設置游戲端口 由于腐蝕的設置需要三個端口&#xff0c;它們用于游戲端口&#xff08;必須為首選端口&#xff09;&a…