golang-queue-test/task/foo/task.go
2025-05-05 09:25:43 +02:00

37 lines
637 B
Go

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
}