내용으로 건너뛰기

Amazon SQS 메시지가 예기치 않게 DLQ로 전송되는 이유는 무엇입니까?

2분 분량
0

Amazon Simple Queue Service(Amazon SQS) Dead Letter Queue(DLQ)를 구성했습니다. Amazon SQS 메시지가 예기치 않게 DLQ로 이동했는데 그 이유를 알고 싶습니다.

해결 방법

Amazon SQS 메시지는 다음과 같은 이유로 DLQ로 이동할 수 있습니다.

ReceiveCount가 maxReceiveCount를 초과함

기본 maxReceiveCount 값은 10입니다. ReceiveCount 값이 대기열의 maxReceiveCount 값을 초과하면 Amazon SQS가 메시지를 DLQ로 이동합니다. 이 문제를 해결하려면 maxReceiveCount 값을 Amazon SQS 재시도가 허용될 정도로 높게 설정하는 것이 가장 좋습니다. 예를 들어 maxReceiveCount 값이 1로 설정된 경우 메시지 수신에 한 번 실패하면 메시지가 DLQ로 이동합니다.

Lambda 함수에 추가 구성이 필요함

AWS Lambda 함수를 사용하여 Amazon SQS 대기열의 메시지를 처리하는 경우 함수를 다시 구성해야 할 수 있습니다. 자세한 내용은 Lambda 함수가 유효한 Amazon SQS 메시지를 재시도하고 Dead Letter Queue(DLQ)에 배치하는 이유는 무엇입니까?를 참조하십시오.

AWS Management Console을 사용하여 SQS 메시지를 확인함

AWS Management Console에서 확인되는 SQS 메시지는 대기열의 재구동 정책을 기준으로 계산되기 때문에 DLQ로 이동할 수 있습니다. DLQ 재구동 정책의 최대 수신 값을 1,000까지 늘릴 수 있습니다. 자세한 내용은 Amazon SQS 콘솔을 사용하여 Dead Letter Queue(DLQ) 구성을 참조하십시오.

ReceiptHandle이 만료되었거나 가시성 시간 제한이 지난 SQS 메시지를 삭제하려고 함

재시도 후에는 메시지가 DLQ로 이동합니다. 기본 대기열에서 이전 ReceiptHandle을 사용하여 DeleteMessage 작업을 수행하는 경우, QueueDoesNotExist 오류가 발생할 수 있습니다. 구성된 VisibilityTimeout 기간 내에 메시지를 삭제해야 합니다. 자세한 내용은 Amazon SQS 대기열에 API를 호출할 때 발생하는 QueueDoesNotExist 오류 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

관련 정보

Amazon SQS에서 Dead Letter Queue(DLQ) 사용