99c8bc36362a8831dc77f671ecd30ef70499d050
批次1 治本核心(MessageRetryQueueServiceImpl): - 新增常量与纯函数 helper:isRateLimit / isRateLimitExhausted / isTerminalState, 及 RetryDecisionLogicTest 纯JUnit5单测(6例) - A1/A2 删除时机:sending 中间态不再误删,仅终态才删 —— 根治 firstFailTime/retryCount 被重置的 R1 根因(回执回来命中既有记录而非走首次入队) - B1/B2 限流分流:限流类(errorCode=RATE_LIMIT)按"首次失败起满12h"时间兜底、 固定120s间隔;普通类维持次数上限与阶梯间隔,行为不变 批次2 唯一约束: - 新增 push_message_retry_queue.message_id 唯一约束迁移SQL(uk_pmrq_message_id,含去重前置查) - saveOrUpdateRetryMessage 抽 applyRetryUpdate + 捕获 DuplicateKeyException 退化更新(MySQL安全) 说明:批次3(守卫链对限流类重发的豁免)经核实为"功能真正生效的必要条件", findings 见 docs/push模块/配额墙核实-findings-2026-06-19.md,留待下轮。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
Languages
Java
100%