Что такое dead letter queue?

Middle
646 просмотров
AFK Offer AI

Dead letter queue (DLQ) — очередь, куда попадают сообщения, которые не удалось обработать после нескольких попыток. Вместо бесконечного retry или потери — откладываем проблемное сообщение в отдельную очередь для разбора.

func consume(msg Message) error {
    err := process(msg)
    if err != nil {
        msg.RetryCount++
        if msg.RetryCount >= 3 {
            // отправляем в DLQ
            dlqProducer.Send(msg)
            return nil // ack оригинал
        }
        return err // nack, пойдёт на retry
    }
    return nil
}

Зачем: одно сломанное сообщение не должно блокировать всю очередь. Без DLQ poison message будет ретраиться вечно, блокируя обработку следующих сообщений. DLQ позволяет: не терять данные, не блокировать очередь, разбирать проблемы потом. На DLQ обычно вешают алерт — если туда что-то прилетело, значит нужно разобраться.

Следующий вопрос

Что такое session management?