From 20b4b6d6bfd708209a8ada9e03928c6291ea3824 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 27 Mar 2026 23:29:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(01-02):=20=E4=BF=AE=E5=A4=8D=E5=AE=9E?= =?UTF-8?q?=E5=90=8D=E6=BF=80=E6=B4=BB=E4=BB=BB=E5=8A=A1=E6=96=AD=E9=93=BE?= =?UTF-8?q?=EF=BC=8C=E4=B8=BA=20PollingHandler=20=E6=B3=A8=E5=85=A5=20asyn?= =?UTF-8?q?q.Client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PollingHandler struct 新增 asynqClient *asynq.Client 字段 - NewPollingHandler 构造函数新增 asynqClient 参数(redis 之后,gatewayClient 之前) - triggerFirstRealnameActivation 改用 asynqClient.EnqueueContext,删除 RPush 降级方案 - 删除 _ = task 废弃代码 - registerPollingHandlers 传入 h.asynqClient 参数 --- internal/task/polling_handler.go | 13 +++++-------- pkg/queue/handler.go | 1 + 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/internal/task/polling_handler.go b/internal/task/polling_handler.go index aa36636..deee55a 100644 --- a/internal/task/polling_handler.go +++ b/internal/task/polling_handler.go @@ -30,6 +30,7 @@ type PollingTaskPayload struct { type PollingHandler struct { db *gorm.DB redis *redis.Client + asynqClient *asynq.Client // 用于提交 Asynq 任务(如首次实名激活) gatewayClient *gateway.Client iotCardStore *postgres.IotCardStore concurrencyStore *postgres.PollingConcurrencyConfigStore @@ -44,6 +45,7 @@ type PollingHandler struct { func NewPollingHandler( db *gorm.DB, redis *redis.Client, + asynqClient *asynq.Client, gatewayClient *gateway.Client, usageService *packagepkg.UsageService, logger *zap.Logger, @@ -51,6 +53,7 @@ func NewPollingHandler( return &PollingHandler{ db: db, redis: redis, + asynqClient: asynqClient, gatewayClient: gatewayClient, iotCardStore: postgres.NewIotCardStore(db, redis), concurrencyStore: postgres.NewPollingConcurrencyConfigStore(db), @@ -1097,11 +1100,8 @@ func (h *PollingHandler) triggerFirstRealnameActivation(ctx context.Context, car asynq.Queue(constants.QueueDefault), ) - // 这里需要访问 Asynq Client,暂时使用 Redis 队列 - // 实际应该通过依赖注入 asynq.Client - activationKey := constants.RedisPollingManualQueueKey(constants.TaskTypePackageFirstActivation) - if err := h.redis.RPush(ctx, activationKey, string(payloadBytes)).Err(); err != nil { - h.logger.Warn("提交激活任务失败", + if _, err := h.asynqClient.EnqueueContext(ctx, task); err != nil { + h.logger.Warn("提交首次实名激活任务失败", zap.Uint("package_usage_id", pkg.ID), zap.Error(err)) continue @@ -1110,8 +1110,5 @@ func (h *PollingHandler) triggerFirstRealnameActivation(ctx context.Context, car h.logger.Info("已提交首次实名激活任务", zap.Uint("package_usage_id", pkg.ID), zap.Uint("card_id", cardID)) - - // 避免未使用变量警告 - _ = task } } diff --git a/pkg/queue/handler.go b/pkg/queue/handler.go index c051787..4db1162 100644 --- a/pkg/queue/handler.go +++ b/pkg/queue/handler.go @@ -151,6 +151,7 @@ func (h *Handler) registerPollingHandlers() { pollingHandler := task.NewPollingHandler( h.db, h.redis, + h.asynqClient, h.gatewayClient, h.workerResult.Services.UsageService, h.logger,