Files
mq-starter/mq-starter-core
hongawen 02469dce11 fix(mq-starter-core): stop() 等待在途定时刷批,堵住停机静默丢批缝隙
review 发现 #1:定时线程刚做完超时快照(buffer 已清空)、正在 doFlush 跑业务
方法时优雅停机——shutdown() 不等它,forceFlush() 见空 buffer 直接返回(连
flushLock 都不进),stop 走完后 JVM 退出杀掉 daemon 线程,该批消息早已逐条
ACK,静默丢失。这是终审 shutdownNow→shutdown 的对偶缝隙:温和关闭解决了
"不打断在刷批",但没人等它刷完。

修复:shutdown() 后补 awaitTermination(30s 上界,超时/中断打 WARN 继续停机,
不让挂死的业务方法永久卡住 Spring 关闭)。

测试:往真定时线程塞在途任务模拟"stop 瞬间定时线程正在刷批",断言 stop
返回前任务已完成(修复前该测试失败:stop 立即返回)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 02:52:43 +01:00
..