Files
mq-starter/mq-starter-core
hongawen 9af2ef06e2 refactor(mq-starter-core): doFlush 的 markSuccess 循环挪出 flushLock
review 发现 #9:成功标记是逐条 store 往返(Redis 网络 IO),却跑在
flushLock 内——该锁本职只是串行化业务批量调用,批已出缓冲、key 逐条
独立,标记占锁只是白白让下一批的业务刷出排队(最多多等 batchSize 次
网络往返)。

修复:markSuccess 循环移到 synchronized 块外。失败路径(落库+吞)不变,
仍在锁内直接 return。去重正确性不受影响:同 key 不会同时出现在两批
(tryAcquire 挡住),store 本身并发安全。

测试:store 回调在首批标记进行中从另一线程投满一批,断言其刷出不被
flushLock 挡住(修复前该测试失败:另一线程阻塞在锁上)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 03:37:53 +01:00
..