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...)
|
|||
|
}
|
|||
|
}
|