fix: 停复机指令队列审查问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m24s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m24s
- 开关开启但分发器心跳缺失时回退为当场执行,避免指令无人消费 - 待确认指令先查上游状态再判断;执行期间被覆盖时把待确认带到新指令 - 同方向失败退避中重复写入不提前执行时间 - 领取容量把执行上限与本秒剩余 QPS 分开计算 - 队列复机共用单卡复机锁;执行上下文取消后按结果未知确认 - 消费者并行停止;读取最近调用时间失败时不覆盖;成功但终结日志失败按成功处理 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -289,13 +289,19 @@ const deviceEvalMaxInFlight = 10
|
||||
|
||||
// shutdown 优雅退出:停止订阅,宽限期内等待执行中的卡任务完成;未完成的由租约到期后重新领取。
|
||||
func (c *carrierSchedulerRuntime) shutdown() {
|
||||
if c.consumers != nil {
|
||||
c.consumers.StopAll(c.grace())
|
||||
}
|
||||
if c.srConsumers != nil {
|
||||
c.srConsumers.StopAll(c.grace())
|
||||
c.devConsumers.StopAll(c.grace())
|
||||
// 三类消费者并行停止,共用同一宽限期。
|
||||
var wg sync.WaitGroup
|
||||
for _, manager := range []*nsqbus.ConsumerManager{c.consumers, c.srConsumers, c.devConsumers} {
|
||||
if manager == nil {
|
||||
continue
|
||||
}
|
||||
wg.Add(1)
|
||||
go func(m *nsqbus.ConsumerManager) {
|
||||
defer wg.Done()
|
||||
m.StopAll(c.grace())
|
||||
}(manager)
|
||||
}
|
||||
wg.Wait()
|
||||
if c.producer != nil {
|
||||
c.producer.Stop()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user