client.go 903 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package asynqsvc
  2. import (
  3. "context"
  4. "kpt-pasture/config"
  5. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  6. "gitee.com/xuyiping_admin/pkg/xerr"
  7. "github.com/hibiken/asynq"
  8. "go.uber.org/zap"
  9. )
  10. type Option = asynq.Option
  11. type Client interface {
  12. CtxEnqueue(ctx context.Context, task *asynq.Task, ops ...Option) (*asynq.TaskInfo, error)
  13. }
  14. func NewClient(cfg *config.AppConfig) Client {
  15. setting := NewAsynqSetting(&cfg.SideWorkSetting.AsynqSetting)
  16. client := asynq.NewClient(setting.Redis.RedisClientOpt())
  17. return &ClientEntry{client}
  18. }
  19. type ClientEntry struct {
  20. *asynq.Client
  21. }
  22. func (c *ClientEntry) CtxEnqueue(ctx context.Context, task *asynq.Task, ops ...Option) (*asynq.TaskInfo, error) {
  23. taskInfo, err := c.Client.Enqueue(task, ops...)
  24. if err != nil {
  25. zaplog.Error("asynq CtxEnqueue failed Error ", zap.Any("err", err))
  26. return taskInfo, xerr.WithStack(err)
  27. }
  28. return taskInfo, nil
  29. }