package foo import ( "context" "encoding/json" "fmt" "time" "github.com/hibiken/asynq" ) type FooTask struct { Date time.Time Message string } func NewFooTask(date time.Time, message string) (*asynq.Task, error) { payload, err := json.Marshal(FooTask{Date: date, Message: message}) if err != nil { return nil, err } return asynq.NewTask("foo", payload), nil } func HandleFooTask(ctx context.Context, t *asynq.Task) error { var p FooTask if err := json.Unmarshal(t.Payload(), &p); err != nil { return fmt.Errorf("json.Unmarshal failed: %v: %w", err, asynq.SkipRetry) } fmt.Printf("%+v\n", p) return nil }