Skip to content

maolinc/job-schedule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

job-schedule

使用quartz作为调度器,mysql持久化任务信息,提供简单易用的页面操作; 支持管理大量任务

1.快速启动

  1. 下载项目
    git clone https://github.com/maolinc/job-schedule.git
  2. 创建数据库表,sql语句位于model目录下
  3. 更改etc/job.yaml配置文件的数据库连接地址DB.DataSource
  4. 启动
    go run job.go
    访问http://127.0.0.1:8024;8023端口为内部rpc使用, 8024端口为api和页面使用; 如果打包部署需要将etc/job.yaml中的Mode改为pro,否则访问不到页面

2.添加任务

在internal/jobaction/jobs目录下有两个例子LoginLogJob和SyncOrderJob。 编写任务大致流程:

  1. 在internal/jobaction/jobs目录下编写任务,任务必须实现Plug接口,如下:
    type Plug interface {
        // Action 定时任务需要实现此接口, res的字符数不能大于5000
        Action(ctx context.Context) (res any, err error)
        // Key 定时任务需要实现此接口, 返回的key与数据库的key一致, 每个插件的key必须不同,且不能为""
        Key() string
        // Compensate 补偿接口, res的字符数不能大于5000
        /**
        由于某种原因定任务某次未执行,可主动调用此方法进行补偿
        params执行参数
        */
        Compensate(ctx context.Context, params map[string]any) (res any, err error)
    }
    任务的具体逻辑不必放在本项目里面,可以使用rpc方式调用业务逻辑,可在internal/svc/serviceContext.go的ServiceContext添加rpc即可
  2. 访问http://127.0.0.1:8024,点击创建任务,填写信息,key必须与步骤1中Key()结果一致
  3. 任务创建后点击进去,可以管理任务的运行,以及主动执行补偿方法 1685618027159

2

3.项目使用到的框架和技术

  1. 后端使用go-zero框架编写rpc和http (使用proto同时提供rpc和http服务)
  2. 前端使用element-plus、axios、vue3 (页面资源位于static目录下)
  3. 定时任务基础框架quartz
  4. 数据库操作gorm

4.todo

  1. 增加在页面http调度
  2. 上传插件运行
  3. 使用redis同步状态
  4. ......

About

持久化的、有页面的任务调度

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published