57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package jobs
|
||
|
||
import (
|
||
"strings"
|
||
|
||
"com.snow.auto_monitor/app/jobs/basejob"
|
||
"com.snow.auto_monitor/config"
|
||
|
||
"github.com/qit-team/snow-core/log/logger"
|
||
"github.com/qit-team/snow-core/queue"
|
||
"github.com/qit-team/snow-core/redis"
|
||
"github.com/qit-team/work"
|
||
)
|
||
|
||
/**
|
||
* 配置队列任务
|
||
*/
|
||
func RegisterWorker(job *work.Job) {
|
||
basejob.SetJob(job)
|
||
|
||
//设置worker的任务投递回调函数
|
||
job.AddFunc("topic-test", test)
|
||
//设置worker的任务投递回调函数,和并发数
|
||
job.AddFunc("topic-test1", test, 2)
|
||
//使用worker结构进行注册
|
||
job.AddWorker("topic-test2", &work.Worker{Call: work.MyWorkerFunc(test), MaxConcurrency: 1})
|
||
|
||
RegisterQueueDriver(job)
|
||
SetOptions(job)
|
||
}
|
||
|
||
/**
|
||
* 给topic注册对应的队列服务
|
||
*/
|
||
func RegisterQueueDriver(job *work.Job) {
|
||
//设置队列服务,需要实现work.Queue接口的方法
|
||
q := queue.GetQueue(redis.SingletonMain, queue.DriverTypeRedis)
|
||
//针对topic设置相关的queue
|
||
job.AddQueue(q, "topic-test1", "topic-test2")
|
||
//设置默认的queue, 没有设置过的topic会使用默认的queue
|
||
job.AddQueue(q)
|
||
}
|
||
|
||
/**
|
||
* 设置配置参数
|
||
*/
|
||
func SetOptions(job *work.Job) {
|
||
//设置logger,需要实现work.Logger接口的方法
|
||
job.SetLogger(logger.GetLogger())
|
||
|
||
//设置启用的topic,未设置表示启用全部注册过topic
|
||
if config.GetOptions().Queue != "" {
|
||
topics := strings.Split(config.GetOptions().Queue, ",")
|
||
job.SetEnableTopics(topics...)
|
||
}
|
||
}
|