修复并发,暂时的,不够完整,后续还是需要重新设计,这个太乱了,傻逼AI
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m22s

This commit is contained in:
2026-05-11 17:19:40 +08:00
parent 05a5694a5f
commit b7369a9c71
16 changed files with 270 additions and 68 deletions

View File

@@ -10,7 +10,6 @@ import (
"github.com/break/junhong_cmp_fiber/pkg/constants"
"github.com/break/junhong_cmp_fiber/pkg/errors"
"github.com/break/junhong_cmp_fiber/pkg/queue"
"github.com/bytedance/sonic"
"github.com/hibiken/asynq"
"go.uber.org/zap"
)
@@ -39,21 +38,12 @@ func (s *Service) SendWelcomeEmail(ctx context.Context, userID uint, email strin
Body: "感谢您注册我们的服务!我们很高兴为您提供服务。",
}
payloadBytes, err := sonic.Marshal(payload)
if err != nil {
s.logger.Error("序列化邮件任务载荷失败",
zap.Uint("user_id", userID),
zap.String("email", email),
zap.Error(err))
return errors.Wrap(errors.CodeInternalError, err, "序列化邮件任务载荷失败")
}
// 提交任务到队列
err = s.queueClient.EnqueueTask(
err := s.queueClient.EnqueueTask(
ctx,
constants.TaskTypeEmailSend,
payloadBytes,
asynq.Queue(constants.QueueDefault),
payload,
asynq.Queue(constants.QueueForTaskType(constants.TaskTypeEmailSend)),
asynq.MaxRetry(constants.DefaultRetryMax),
)
@@ -82,20 +72,12 @@ func (s *Service) SendPasswordResetEmail(ctx context.Context, email string, rese
Body: fmt.Sprintf("您的密码重置令牌是: %s\n此令牌将在 1 小时后过期。", resetToken),
}
payloadBytes, err := sonic.Marshal(payload)
if err != nil {
s.logger.Error("序列化密码重置邮件任务载荷失败",
zap.String("email", email),
zap.Error(err))
return errors.Wrap(errors.CodeInternalError, err, "序列化密码重置邮件任务载荷失败")
}
// 提交任务到队列(高优先级)
err = s.queueClient.EnqueueTask(
// 提交任务到独立邮件队列
err := s.queueClient.EnqueueTask(
ctx,
constants.TaskTypeEmailSend,
payloadBytes,
asynq.Queue(constants.QueueCritical), // 密码重置使用高优先级队列
payload,
asynq.Queue(constants.QueueForTaskType(constants.TaskTypeEmailSend)),
asynq.MaxRetry(constants.DefaultRetryMax),
)
@@ -122,20 +104,12 @@ func (s *Service) SendNotificationEmail(ctx context.Context, to string, subject
Body: body,
}
payloadBytes, err := sonic.Marshal(payload)
if err != nil {
s.logger.Error("序列化通知邮件任务载荷失败",
zap.String("to", to),
zap.Error(err))
return errors.Wrap(errors.CodeInternalError, err, "序列化通知邮件任务载荷失败")
}
// 提交任务到队列(低优先级)
err = s.queueClient.EnqueueTask(
// 提交任务到独立邮件队列
err := s.queueClient.EnqueueTask(
ctx,
constants.TaskTypeEmailSend,
payloadBytes,
asynq.Queue(constants.QueueLow), // 通知邮件使用低优先级队列
payload,
asynq.Queue(constants.QueueForTaskType(constants.TaskTypeEmailSend)),
asynq.MaxRetry(constants.DefaultRetryMax),
)