掘金 后端 ( ) • 2024-05-31 13:30

定时任务管理系统在Gin+vue3开发的,系统框架是gofly快速开发系统框架,目前系统定时任务是支持两种定时类型,一种是函数类型,一种是接口类型,来支持多样的业务;时间周期可视化选择,方便设定执行周期。框架UI漂亮,添加管理定时任务设置简单,客户都可以做自己调整执行时间周期,直观的执行日志,下面我们一起框体验吧!

一、在线体验和获取代码地址

二、截图效果

登录

进入系统

点击定时任务

添加或编辑任务

执行任务日志

三、使用

HttpJob 接口类型

任务类型选择:访问URL。

接口类型是比较简单的,在系统中配置好调用的接口地址(访问的url地址)、调用周期即可;

ExecJob 函数类型

任务类型选择:调用函数。

函数类型是需要使用代码来完成的业务,这个时候我们需要使用函数类型;

系统中给出了一个示例:

cronjob目录中可以看到examples.go的文件,这里边是给出的一个示例代码;

下面我们针对示例代码做一下介绍:

第一步:需要创建一个结构体,这个结构体需要实现JobCore接口;如:ExamplesOne,里边实现了Exec方法;

type ExamplesOne struct{}

func (t ExamplesOne) Exec(arg interface{}) error {
    str := time.Now().Format(timeFormat) + " [INFO] JobCore ExamplesOne exec success"
    // TODO: 这里需要注意 Examples 传入参数是 string 所以 arg.(string);请根据对应的类型进行转化;
    switch arg.(type) {
    case string:
        if arg.(string) != "" {
            fmt.Println("函数参数:", arg.(string))
            fmt.Println("函数执行了:", str, arg.(string))
        } else {
            fmt.Println("arg is nil")
            fmt.Println("函数执行了:", str, "arg is nil")
        }
        break
    }
    return nil
}

第二步:需要在jobbase.go下的InitJob中注册这个结构体;如:ExamplesOne;需要将结构体的名称作为key,结构体作为value;这样重新启动项目,就可以在系统中进行配置并使用了;

func InitJob() {
    jobList = map[string]JobsExec{
        "ExamplesOne": ExamplesOne{},
        // ...
    }
}