暂存一下,防止丢失
This commit is contained in:
41
internal/task/card_observation_series.go
Normal file
41
internal/task/card_observation_series.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/bytedance/sonic"
|
||||
"github.com/hibiken/asynq"
|
||||
"go.uber.org/zap"
|
||||
|
||||
cardapp "github.com/break/junhong_cmp_fiber/internal/application/cardobservation"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
||||
)
|
||||
|
||||
// CardObservationSeriesHandler 处理固定零重试的卡观测序列尝试。
|
||||
type CardObservationSeriesHandler struct {
|
||||
service *cardapp.SeriesAttemptService
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
// NewCardObservationSeriesHandler 创建卡观测序列任务处理器。
|
||||
func NewCardObservationSeriesHandler(service *cardapp.SeriesAttemptService, logger *zap.Logger) *CardObservationSeriesHandler {
|
||||
return &CardObservationSeriesHandler{service: service, logger: logger}
|
||||
}
|
||||
|
||||
// Handle 解析结构化载荷并执行单次观测。
|
||||
func (h *CardObservationSeriesHandler) Handle(ctx context.Context, task *asynq.Task) error {
|
||||
if h == nil || h.service == nil {
|
||||
return errors.New(errors.CodeInternalError, "卡观测序列任务服务未配置")
|
||||
}
|
||||
var payload cardapp.SeriesTaskPayload
|
||||
if err := sonic.Unmarshal(task.Payload(), &payload); err != nil {
|
||||
h.logger.Error("解析卡观测序列任务载荷失败", zap.Error(err))
|
||||
return errors.Wrap(errors.CodeInvalidParam, err, "卡观测序列任务载荷无法解析")
|
||||
}
|
||||
if err := h.service.Execute(ctx, payload); err != nil {
|
||||
h.logger.Warn("卡观测序列当前尝试失败",
|
||||
zap.String("series_id", payload.SeriesID), zap.Int("attempt", payload.Attempt), zap.Error(err))
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user