Что такое Dead Letter Queue
Python
Middle
Без компании
Что такое Dead Letter Queue
Ответы
Dead Letter Queue (DLQ) — это специальная очередь сообщений, куда попадают сообщения, которые не могут быть обработаны по разным причинам (например, ошибки обработки, истечение срока жизни сообщения, превышение лимита попыток обработки). DLQ помогает избежать потери данных и упрощает отладку проблем.
Пример с AWS SQS и boto3:
```
import boto3
sqs = boto3.client('sqs')
# Создание основной очереди с DLQ
dlq_response = sqs.create_queue(QueueName='my-dlq.fifo')
dlq_arn = sqs.get_queue_attributes(
QueueUrl=dlq_response['QueueUrl'],
AttributeNames=['QueueArn']
)['Attributes']['QueueArn']
# Настройка redrive policy для основной очереди
redrive_policy = {
'deadLetterTargetArn': dlq_arn,
'maxReceiveCount': '3' # После 3 неудачных попыток — в DLQ
}
sqs.create_queue(
QueueName='main-queue.fifo',
Attributes={
'RedrivePolicy': json.dumps(redrive_policy)
}
)
```
Ключевые особенности DLQ:
- Сохраняет "мертвые" сообщения для последующего анализа
- Позволяет настроить политику повторных попыток
- Поддерживается в RabbitMQ, Kafka, AWS SQS и других брокерах сообщений