scheduler.go 774 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package internal
  2. import (
  3. "encoding/json"
  4. "github.com/gogf/gf/container/gmap"
  5. "github.com/gogf/gf/encoding/gjson"
  6. "sparrow/pkg/rule"
  7. "sparrow/pkg/server"
  8. )
  9. // TaskSchedule task schedule 任务调度
  10. type TaskSchedule struct {
  11. tasks *gmap.HashMap // 保存任务名称与任务实体的映射
  12. }
  13. func NewTaskSchedule() *TaskSchedule {
  14. return &TaskSchedule{
  15. tasks: gmap.NewHashMap(true),
  16. }
  17. }
  18. func (t *TaskSchedule) DoTask(msg []byte) error {
  19. var task rule.TimerTaskMessage
  20. err := json.Unmarshal([]byte(msg), &task)
  21. if err != nil {
  22. return err
  23. }
  24. newJson := gjson.New(task.Actions)
  25. server.Log.Debugf("do task:actions:%s", newJson.MustToJsonString())
  26. // 创建任务
  27. err = NewTaskExecutor(task.Actions).Do()
  28. if err != nil {
  29. return err
  30. }
  31. return nil
  32. }