gosqs: персистить перенос в DLQ (SaveMessage в DLQ + DeleteMessagePersist исходной)
This commit is contained in:
@@ -146,10 +146,16 @@ func processQueueTick(key string, queue *models.Queue) {
|
||||
queue.DeadLetterQueue != nil &&
|
||||
msg.Retry >= queue.MaxReceiveCount {
|
||||
dlqMsg := *msg
|
||||
msgUuid := msg.Uuid
|
||||
dlqName := queue.DeadLetterQueue.Name
|
||||
queue.DeadLetterQueue.LockMu()
|
||||
queue.DeadLetterQueue.AppendMessage(dlqMsg)
|
||||
queue.DeadLetterQueue.UnlockMu()
|
||||
queue.RemoveIndex(i)
|
||||
// Персист переноса: иначе после рестарта сообщение «воскреснет»
|
||||
// в исходной очереди (не удалено из Redis) и пропадёт из DLQ.
|
||||
persistence.DeleteMessagePersist(key, msgUuid)
|
||||
persistence.SaveMessage(dlqKeyFor(key, dlqName), &dlqMsg)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user