暂存一下,防止丢失

This commit is contained in:
2026-07-24 16:07:18 +08:00
parent 5d6e23f1a5
commit a18ed8bc8d
180 changed files with 13597 additions and 1986 deletions

View 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)