暂存一下,防止丢失
This commit is contained in:
41
pkg/queue/card_observation_series.go
Normal file
41
pkg/queue/card_observation_series.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package queue
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strconv"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
|
||||
cardapp "github.com/break/junhong_cmp_fiber/internal/application/cardobservation"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
||||
)
|
||||
|
||||
// CardObservationSeriesScheduler 将固定阶梯任务提交到独立队列。
|
||||
type CardObservationSeriesScheduler struct {
|
||||
client *Client
|
||||
}
|
||||
|
||||
// NewCardObservationSeriesScheduler 创建卡观测序列任务调度器。
|
||||
func NewCardObservationSeriesScheduler(client *Client) *CardObservationSeriesScheduler {
|
||||
return &CardObservationSeriesScheduler{client: client}
|
||||
}
|
||||
|
||||
// Enqueue 以稳定 series_id + attempt 任务 ID 零重试入队。
|
||||
func (s *CardObservationSeriesScheduler) Enqueue(ctx context.Context, payload cardapp.SeriesTaskPayload) error {
|
||||
taskID := "card-series-" + payload.SeriesID + "-" + strconv.Itoa(payload.Attempt)
|
||||
err := s.client.EnqueueTask(
|
||||
ctx,
|
||||
constants.TaskTypeCardObservationSeries,
|
||||
payload,
|
||||
asynq.TaskID(taskID),
|
||||
asynq.ProcessAt(payload.ScheduledAt),
|
||||
asynq.MaxRetry(0),
|
||||
)
|
||||
if errors.Is(err, asynq.ErrTaskIDConflict) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
var _ cardapp.SeriesScheduler = (*CardObservationSeriesScheduler)(nil)
|
||||
Reference in New Issue
Block a user