IrisAdminJob 项目为一个任务管模块插件,可以为 IrisAdmin 项目快速集成任务管理API.
go get -u github.com/snowlyg/iris-admin-job@latest
- only for gin
package main
import (
job_gin "github.com/snowlyg/iris-admin-job/gin"
"github.com/snowlyg/iris-admin-job/gin/job"
"github.com/snowlyg/iris-admin/server/web"
"github.com/snowlyg/iris-admin/server/web/web_gin"
"github.com/snowlyg/iris-admin/server/zap_server"
)
func main() {
wi := web_gin.Init()
v1 := wi.GetRouterGroup("/api/v1")
{
job_gin.Party(v1)
}
go func() {
job.BuiltinJobs.AddBuiltinJob("yourJobRun", "@every 1m", "yourJobRun", &YourJob{})
job.StartJob()
}()
web.Start(wi)
}
package job
import (
"github.com/snowlyg/iris-admin/server/zap_server"
"github.com/snowlyg/iris-admin-job/gin/job"
)
type YourJob struct {
Name string
// ....
}
func (j *YourJob) Run() {
var message string
err := yourJobRun()
if err != nil {
message = err.Error()
}
err = job.UpdateExecInfo(j.Name, message)
if err != nil {
zap_server.ZAPLOG.Error(err.Error())
}
}
// yourJobRun
func yourJobRun() error {
// do something here...
return nil
}
job.BuiltinJobs.AddBuiltinJob("yourJobRun", "@every 1m", "yourJobRun", &YourJob{})
job.StartJob()
// run your job after 2 second
job.OnceJob(&YourJob{},2*time.Second)
job.StartJob()
GET /job/list // 列表
POST /job/modifyStatus/:id //更新状态
POST /job/modifyJobSpec/:id //更新任务条件
GET /job/execJob/:id // 执行任务