gosqs: персистить перенос в DLQ (SaveMessage в DLQ + DeleteMessagePersist исходной)

This commit is contained in:
Repinoid
2026-10-11 08:34:01 +03:00
parent e720f1ffcb
commit dd9acb3705
5 changed files with 41 additions and 9 deletions
+6
View File
@@ -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)
}
}