67 lines
1.4 KiB
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...)
|
|
}
|