diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/checker/MsgPushGuardChain.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/checker/MsgPushGuardChain.java index 7a75957..23073b9 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/checker/MsgPushGuardChain.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/checker/MsgPushGuardChain.java @@ -4,6 +4,7 @@ import com.njcn.msgpush.module.push.checker.impl.BlacklistChecker; import com.njcn.msgpush.module.push.checker.impl.QuotaChecker; import com.njcn.msgpush.module.push.checker.impl.RateLimitChecker; import com.njcn.msgpush.module.push.dal.dataobject.message.MessageRecordDO; +import com.njcn.msgpush.module.push.enums.RetrySourceEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,9 +25,15 @@ public class MsgPushGuardChain { private RateLimitChecker rateLimitChecker; - public void checkAll(List messageRecordList) { + public void checkAll(List messageRecordList, RetrySourceEnum retrySource) { + // 黑名单:首发与重发(含限流自动重试)都必须执行 blacklistChecker.check(messageRecordList); - quotaChecker.check(messageRecordList); - rateLimitChecker.check(messageRecordList); + // 配额/接收者频率:系统自动重试(限流类无限重试)完全豁免——否则会被守卫置终态、队列记录被删, + // 无限重试静默失效。重发节奏由 120s 固定间隔 + 12h 兜底天然封顶,无需配额墙再约束。 + // 首发(retrySource==null)与人工重试(MANUAL_RETRY)仍正常受这两道守卫。 + if (retrySource != RetrySourceEnum.AUTO_RETRY) { + quotaChecker.check(messageRecordList); + rateLimitChecker.check(messageRecordList); + } } } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java index d507769..5d48f0a 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java @@ -93,7 +93,7 @@ public class MessageRecordServiceImpl extends ServiceImpl processSendMsg(List messageRecordDOList, RetrySourceEnum retrySource) { - msgPushGuardChain.checkAll(messageRecordDOList); + msgPushGuardChain.checkAll(messageRecordDOList, retrySource); List resultList = new ArrayList<>(); for (MessageRecordDO messageRecordDO : messageRecordDOList) { try { @@ -131,11 +131,11 @@ public class MessageRecordServiceImpl extends ServiceImpl