- scatter pending order when starting up(avoid access db simultaneously).

This commit is contained in:
gazebo
2018-07-28 13:15:15 +08:00
parent 7734399392
commit 5bcd49c1fa

View File

@@ -14,7 +14,9 @@ import (
) )
const ( const (
pendingOrderGapMax = 2 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态 pendingOrderGapMax = 200 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态
maxTimeHandlePendingOrder = 2 * time.Second //处理pending order的最长时间
maxSleepGapHandlePendingOrder = 5 * time.Millisecond // 每个pending order的最长时间间隙
) )
var ( var (
@@ -102,6 +104,12 @@ func LoadPendingOrders() {
sortOrders = append(sortOrders, bill) sortOrders = append(sortOrders, bill)
} }
sort.Sort(sortOrders) sort.Sort(sortOrders)
sleepGap := maxTimeHandlePendingOrder / time.Duration(len(sortOrders))
if sleepGap > maxSleepGapHandlePendingOrder {
sleepGap = maxSleepGapHandlePendingOrder
}
lastTime := time.Now()
for _, item := range sortOrders { for _, item := range sortOrders {
if order, ok := item.(*model.GoodsOrder); ok { if order, ok := item.(*model.GoodsOrder); ok {
jxutils.CallMsgHandlerAsync(func() { jxutils.CallMsgHandlerAsync(func() {
@@ -117,5 +125,11 @@ func LoadPendingOrders() {
scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true) scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true)
}, bill.VendorOrderID) }, bill.VendorOrderID)
} }
curTime := time.Now()
timeout := sleepGap - curTime.Sub(lastTime)
if timeout > 0 {
time.Sleep(timeout)
}
lastTime = curTime
} }
} }