xxl-job执行器golang版——xxl-job-executor-go

项目地址

https://github.com/xxl-job/xxl-job-executor-go

xxl-job-executor-go

很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单:

支持

 11.执行器注册
 22.耗时任务取消
 33.任务注册,像写http.Handler一样方便
 44.任务panic处理
 55.阻塞策略处理
 66.任务完成支持返回执行备注
 77.任务超时取消 (单位:秒,0为不限制)
 88.失败重试次数(在参数param中,目前由任务自行处理)
 99.可自定义日志
1010.自定义日志查看handler
1111.支持外部路由(可与gin集成)

Example

 1package main
 2
 3import (
 4	"fmt"
 5	xxl "github.com/xxl-job/xxl-job-executor-go"
 6	"github.com/xxl-job/xxl-job-executor-go/example/task"
 7	"log"
 8)
 9
10func main() {
11	exec := xxl.NewExecutor(
12		xxl.ServerAddr("http://127.0.0.1/xxl-job-admin"),
13		xxl.AccessToken(""),            //请求令牌(默认为空)
14		xxl.ExecutorIp("127.0.0.1"),    //可自动获取
15		xxl.ExecutorPort("9999"),       //默认9999(非必填)
16		xxl.RegistryKey("golang-jobs"), //执行器名称
17		xxl.SetLogger(&logger{}),       //自定义日志
18	)
19	exec.Init()
20	//设置日志查看handler
21	exec.LogHandler(func(req *xxl.LogReq) *xxl.LogRes {
22		return &xxl.LogRes{Code: xxl.SuccessCode, Msg: "", Content: xxl.LogResContent{
23			FromLineNum: req.FromLineNum,
24			ToLineNum:   2,
25			LogContent:  "这个是自定义日志handler",
26			IsEnd:       true,
27		}}
28	})
29	//注册任务handler
30	exec.RegTask("task.test", task.Test)
31	exec.RegTask("task.test2", task.Test2)
32	exec.RegTask("task.panic", task.Panic)
33	log.Fatal(exec.Run())
34}
35
36//xxl.Logger接口实现
37type logger struct{}
38
39func (l *logger) Info(format string, a ...interface{}) {
40	fmt.Println(fmt.Sprintf("自定义日志 - "+format, a...))
41}
42
43func (l *logger) Error(format string, a ...interface{}) {
44	log.Println(fmt.Sprintf("自定义日志 - "+format, a...))
45}

示例项目

https://github.com/xxl-job/xxl-job-executor-go/example/

与gin框架集成

https://github.com/gin-middleware/xxl-job-executor

xxl-job-admin配置

添加执行器

执行器管理->新增执行器,执行器列表如下:

1AppName		名称		注册方式	OnLine 		机器地址 		操作
2golang-jobs	golang执行器	自动注册 		查看 ( 1

查看->注册节点

1http://127.0.0.1:9999

添加任务

任务管理->新增(注意,使用BEAN模式,JobHandler与RegTask名称一致)

11	测试panic	BEAN:task.panic	* 0 * * * ?	admin	STOP	
22	测试耗时任务	BEAN:task.test2	* * * * * ?	admin	STOP	
33	测试golang	BEAN:task.test		* * * * * ?	admin	STOP

发布日期:2023-03-05 22:50 字数:199 用时 1分钟
tags:xxl-job job