change public funcs to method
This commit is contained in:
parent
fcdcaaaa3c
commit
61c1ac19a4
|
@ -14,6 +14,8 @@ type Instance struct {
|
||||||
Scheduler *asynq.Scheduler
|
Scheduler *asynq.Scheduler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var instance Instance
|
||||||
|
|
||||||
// NewInstance ...
|
// NewInstance ...
|
||||||
func NewInstance(cfg Config) Instance {
|
func NewInstance(cfg Config) Instance {
|
||||||
// Init redis connection
|
// Init redis connection
|
||||||
|
@ -24,7 +26,6 @@ func NewInstance(cfg Config) Instance {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init instance
|
// Init instance
|
||||||
instance := Instance{}
|
|
||||||
instance.Server = initServer(redisConn, cfg)
|
instance.Server = initServer(redisConn, cfg)
|
||||||
instance.Scheduler = initScheduler(redisConn)
|
instance.Scheduler = initScheduler(redisConn)
|
||||||
instance.Client = initClient(redisConn)
|
instance.Client = initClient(redisConn)
|
||||||
|
|
26
task.go
26
task.go
|
@ -1,22 +1,11 @@
|
||||||
package queue
|
package queue
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/hibiken/asynq"
|
"github.com/hibiken/asynq"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunTask ...
|
// RunTask ...
|
||||||
func RunTask(client *asynq.Client, typename string, data map[string]interface{}, retryTimes int) (*asynq.TaskInfo, error) {
|
func (i Instance) RunTask(typename string, payload []byte, retryTimes int) (*asynq.TaskInfo, error) {
|
||||||
// Convert to []byte
|
|
||||||
payload, err := json.Marshal(data)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("task type: %s - error when create new task: %s", typename, err.Error())
|
|
||||||
return nil, errors.New(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create task and options
|
// Create task and options
|
||||||
task := asynq.NewTask(typename, payload)
|
task := asynq.NewTask(typename, payload)
|
||||||
options := make([]asynq.Option, 0)
|
options := make([]asynq.Option, 0)
|
||||||
|
@ -28,25 +17,18 @@ func RunTask(client *asynq.Client, typename string, data map[string]interface{},
|
||||||
options = append(options, asynq.MaxRetry(retryTimes))
|
options = append(options, asynq.MaxRetry(retryTimes))
|
||||||
|
|
||||||
// Enqueue task
|
// Enqueue task
|
||||||
return client.Enqueue(task, options...)
|
return i.Client.Enqueue(task, options...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ScheduledTask create new task and run at specific time
|
// ScheduledTask create new task and run at specific time
|
||||||
// cronSpec follow cron expression
|
// cronSpec follow cron expression
|
||||||
// https://www.freeformatter.com/cron-expression-generator-quartz.html
|
// https://www.freeformatter.com/cron-expression-generator-quartz.html
|
||||||
func ScheduledTask(scheduler *asynq.Scheduler, typename string, data map[string]interface{}, cronSpec string) (string, error) {
|
func (i Instance) ScheduledTask(typename string, payload []byte, cronSpec string) (string, error) {
|
||||||
// Convert to []byte
|
|
||||||
payload, err := json.Marshal(data)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("task type: %s - error when create new task: %s", typename, err.Error())
|
|
||||||
return "", errors.New(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create task and options
|
// Create task and options
|
||||||
task := asynq.NewTask(typename, payload)
|
task := asynq.NewTask(typename, payload)
|
||||||
|
|
||||||
// TODO: Support options later
|
// TODO: Support options later
|
||||||
// options := make([]asynq.Option, 0)
|
// options := make([]asynq.Option, 0)
|
||||||
|
|
||||||
return scheduler.Register(cronSpec, task)
|
return i.Scheduler.Register(cronSpec, task)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue