com.snow.auto_monitor/app/jobs/basejob/base_job.go

67 lines
1.4 KiB
Go

package basejob
import (
"context"
"sync"
"github.com/qit-team/work"
)
var (
jb *work.Job
register func(job *work.Job)
mu sync.RWMutex
)
func SetJob(job *work.Job) {
if jb == nil {
jb = job
}
}
func SetJobRegister(r func(*work.Job)) {
register = r
}
func GetJob() *work.Job {
if jb == nil {
if register != nil {
mu.Lock()
defer mu.Unlock()
jb = work.New()
register(jb)
} else {
panic("job register is nil")
}
}
return jb
}
/**
* 消息入队 -- 原始message
*/
func Enqueue(ctx context.Context, topic string, message string, args ...interface{}) (isOk bool, err error) {
return GetJob().Enqueue(ctx, topic, message, args...)
}
/**
* 消息入队 -- Task数据结构
*/
func EnqueueWithTask(ctx context.Context, topic string, task work.Task, args ...interface{}) (isOk bool, err error) {
return GetJob().EnqueueWithTask(ctx, topic, task, args...)
}
/**
* 消息批量入队 -- 原始message
*/
func BatchEnqueue(ctx context.Context, topic string, messages []string, args ...interface{}) (isOk bool, err error) {
return GetJob().BatchEnqueue(ctx, topic, messages, args...)
}
/**
* 消息批量入队 -- Task数据结构
*/
func BatchEnqueueWithTask(ctx context.Context, topic string, tasks []work.Task, args ...interface{}) (isOk bool, err error) {
return GetJob().BatchEnqueueWithTask(ctx, topic, tasks, args...)
}