Files
atomctl/templates/project/app/jobs/demo_job.go.tpl
2025-09-10 18:06:24 +08:00

54 lines
1.1 KiB
Smarty

package jobs
import (
"context"
"sort"
"time"
. "github.com/riverqueue/river"
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
"go.ipao.vip/atom/contracts"
_ "go.ipao.vip/atom/contracts"
)
var _ contracts.JobArgs = DemoJob{}
type DemoJob struct {
Strings []string `json:"strings"`
}
func (s DemoJob) InsertOpts() InsertOpts {
return InsertOpts{
Queue: QueueDefault,
Priority: PriorityDefault,
}
}
func (DemoJob) Kind() string { return "demo_job" }
func (a DemoJob) UniqueID() string { return a.Kind() }
var _ Worker[DemoJob] = (*DemoJobWorker)(nil)
// @provider(job)
type DemoJobWorker struct {
WorkerDefaults[DemoJob]
}
func (w *DemoJobWorker) NextRetry(job *Job[DemoJob]) time.Time {
return time.Now().Add(30 * time.Second)
}
func (w *DemoJobWorker) Work(ctx context.Context, job *Job[DemoJob]) error {
logger := log.WithField("job", job.Args.Kind())
logger.Infof("[START] %s args: %v", job.Args.Kind(), job.Args.Strings)
defer logger.Infof("[END] %s", job.Args.Kind())
// modify below
sort.Strings(job.Args.Strings)
logger.Infof("[%s] Sorted strings: %v\n", time.Now().Format(time.TimeOnly), job.Args.Strings)
return nil
}