di_crontab.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package dep
  2. import (
  3. "kpt-pasture/config"
  4. "kpt-pasture/module/crontab"
  5. "go.uber.org/dig"
  6. "gitee.com/xuyiping_admin/pkg/cron"
  7. prom "github.com/prometheus/client_golang/prometheus"
  8. )
  9. var DataCenterCrontabCounterVec = prom.NewCounterVec(
  10. prom.CounterOpts{
  11. Namespace: "kpt-pasture",
  12. Subsystem: "crontab",
  13. Name: "crontab",
  14. },
  15. []string{"name"},
  16. )
  17. func DICrontabService() (out *cron.Crontab) {
  18. container := DI()
  19. if err := container.Provide(EntryCrontab); err != nil {
  20. panic(err)
  21. }
  22. if err := container.Invoke(func(c *cron.Crontab) { out = c }); err != nil {
  23. panic(err)
  24. }
  25. return
  26. }
  27. // CrontabDependency 依赖注入结构体
  28. type CrontabDependency struct {
  29. dig.In
  30. CrontabHub crontab.Crontab // 定时任务
  31. }
  32. func EntryCrontab(dependency CrontabDependency) *cron.Crontab {
  33. cfg := config.Options()
  34. cs := cfg.CronSetting
  35. newCrontab := cron.NewCrontab(DataCenterCrontabCounterVec)
  36. err := newCrontab.Bind("UpdateCowDayAge", cs.UpdateCowDayAge, dependency.CrontabHub.UpdateCowInfo)
  37. if err != nil {
  38. panic(err)
  39. }
  40. err = newCrontab.Bind("GenerateWorkOrder", cs.GenerateWorkOrder, dependency.CrontabHub.GenerateAsynqWorkOrder)
  41. if err != nil {
  42. panic(err)
  43. }
  44. return newCrontab
  45. }