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 用时
标签云
alpine(1) api网关(1) async(1) await(1) centos(4) cli(1) client-go(1) debug(1) docker(10) docker-compose(1) dockerfile(1) embed(1) es6(1) etcd(1) etcdctl(1) freemesh(2) git(6) go(5) go-zeus(5) goland(2) golang(7) grafana(2) grpc(5) grpcurl(1) homebrew(1) homedir(1) http(2) hugo(1) java(2) javascript(3) job(1) js(1) json(1) k8s(16) k8s部署指南(1) kubebuilder(1) kubectl(4) kubernetes(1) linux(2) localecompare(1) lombok(1) metrics(2) mock(1) mysql(1) npm(1) nsenter(1) nvm(1) pnpm(2) pprof(1) prettier(1) prometheus(2) protobuf3(1) protoc(1) qiankun(1) request(1) scss(1) servicemesh(1) spring(1) springcloud->freemesh(1) ssh(2) systemctl(1) tcpdump(1) typescript(2) vite(2) vscode(2) vue(8) vue-admin(2) vue3(1) webssh(1) xtermjs(1) xxl-job(1) yarn(1) zookeeper(1) 云原生(4) 云原生框架(1) 介绍(1) 单体架构->freemesh(1) 单元化(1) 博客(1) 压缩(1) 可观测(1) 后台管理系统(1) 命名规范(1) 多云多活(1) 如水网(1) 安全(1) 安装(1) 容器(2) 开发联调神器(1) 微前端(1) 微服务(2) 微服务架构->freemesh(1) 微服务框架(1) 快速开始(1) 控制面(1) 数据面(1) 文集(2) 服务发现(1) 服务网格(1) 流量泳道(1) 流量管理(1) 监控告警(1) 端口映射(1) 证书(1) 负载均衡(1) 配置(1)