手写 xxl-job 00

93 阅读1分钟

整体架构

1.jpg

xin-job-admin 调度平台,读取数据库任务,发起调度 custom-server 执行器服务,客户自行实现,依赖 xin-job-client,由 xin-job-client 与 xin-job-admin 进行网络交互,执行定时任务

初始化代码

  1. 创建项目目录
create xin-job
cd xin-job
create admin
create core
create client
create example

2. 创建项目

cd xin-job/admin
go mod init
cd xin-job/core
go mod init
cd xin-job/client
go mod init
cd xin-job/example
go mod init

3. 配置项目依赖,使用 go work ,go 版本必须在 1.18 以上

cd xin-job/core
mkdir biz
touch model.go
// biz/model.go
package biz

// 用于测试其他模块依赖 core 是否能依赖成功
type Return[T any] struct {
	Code uint8
	Msg string
	Content T
}
cd xin-job/admin
go work init
go work use ./ ../core 

执行完以上命令,xin-job/admin 目录下会生成 go.work 文件,打开文件后内容为以下内容 其中 use 意思就是依赖当前项目 . 以及上级目录中的 core

go 1.22.0

use (
	.
	../core
)
cd xin-job/admin
touch main.go
package main

import (
	"fmt"
	"xin-job/core/biz"
)

func main() {
	r := biz.Return[string]{Msg: "success",Code: 200,Content: "success"}
	fmt.Println(r)
}
cd xin-job/admin
go run main.go

控制台打印内容为 {200 success success}

go work 使用参考: 【【go小知识】go1.18新功能workspace,非常有用和实用】 www.bilibili.com/video/BV1eY…

本文所有代码

xin-job: golang 实现 xin-job 垃圾版 (gitee.com) 下的 xin-job-00.tar.gz