기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SQS에서 배달 못한 편지 대기열 사용
Amazon SQS는 성공적으로 처리되지 않은 메시지를 소스 대기열에서 대상으로 지정할 수 있는 배달 못한 편지 대기열을 지원합니다. 소비되지 않은 메시지를 구분하여 처리가 실패한 이유를 확인할 수 있으므로 DLQ는 애플리케이션을 디버깅하는 데 유용합니다. 최적의 성능을 위해 소스 대기열과 DLQ를 동일한 AWS 계정 및 리전 내에 유지하는 것이 가장 좋습니다. 메시지가 배달 못한 편지 대기열에 있으면 다음을 수행할 수 있습니다.
-
메시지가 DLQ(Dead Letter Queue)로 이동되게 만든 예외적인 상황의 로그를 검사합니다.
-
배달 못한 편지 대기열로 이동한 메시지의 내용을 분석하여 애플리케이션 문제를 진단합니다.
-
소비자에게 메시지를 처리하기에 충분한 시간을 주었는지 확인합니다.
-
배달 못한 편지 대기열 리드라이브를 사용하여 배달 못한 편지 대기열에서 메시지를 이동합니다.
대기열을 배달 못한 편지 대기열로 구성하기 전에 먼저 새 대기열을 생성해야 합니다. Amazon SQS 콘솔을 사용하여 DLQ(Dead Letter Queue)를 구성하는 방법에 대한 자세한 내용은 Amazon SQS 콘솔을 사용하여 배달 못한 편지 대기열 구성 섹션을 참조하세요. 배달 못한 편지 대기열로 이동한 메시지에 대한 경보를 구성하는 방법 등 배달 못한 편지 대기열에 대한 도움말은 Amazon CloudWatch를 사용하여 배달 못한 편지 대기열에 대한 경보 생성 섹션을 참조하세요.
배달 못한 편지 대기열에 대한 정책 사용
리드라이브 정책을 사용하여 maxReceiveCount
를 지정합니다. maxReceiveCount
는 소비자가 배달 못한 편지 대기열로 이동하기 전에 대기열에서 메시지를 삭제하지 않고 수신하려고 시도한 횟수입니다. 예를 들어 maxReceiveCount
를 1과 같이 낮은 값으로 설정하면 메시지 수신에 1회 실패할 경우 메시지가 배달 못한 편지 대기열로 이동하게 됩니다. 시스템이 오류에 대해 복원력을 갖도록 하려면 충분한 재시도를 허용할 수 있을 정도로 maxReceiveCount
를 높게 설정하세요.
리드라이브 허용 정책은 DLQ(Dead Letter Queue)에 액세스할 수 있는 소스 대기열을 지정합니다. 모든 소스 대기열을 허용할지, 특정 소스 대기열을 허용할지, 모든 소스 대기열의 배달 못한 편지 대기열 사용을 거부할지 선택할 수 있습니다. 기본값은 모든 소스 대기열이 배달 못한 편지 대기열을 사용하도록 허용합니다. byQueue
옵션 사용하여 특정 대기열을 허용하도록 선택하는 경우, 소스 대기열 Amazon 리소스 이름(ARN)을 사용하여 최대 10개의 소스 대기열을 지정할 수 있습니다. denyAll
을 지정하는 경우, 대기열을 DLQ(Dead Letter Queue)로 사용할 수 없습니다.
배달 못한 편지 대기열의 메시지 보존 기간 이해
표준 대기열의 경우, 메시지 만료는 항상 메시지가 원래 대기열에 추가된 타임스탬프를 기준으로 합니다. 메시지가 DLQ(Dead Letter Queue)로 이동하면 대기열에 추가 타임스탬프는 변경되지 않습니다. ApproximateAgeOfOldestMessage
지표는 메시지가 원래 전송된 시간이 아니라 메시지가 DLQ(Dead Letter Queue)로 이동한 시간을 나타냅니다. 예를 들어, 메시지가 DLQ(Dead Letter Queue)로 이동하기 전에 원래 대기열에서 1일을 보낸다고 가정합니다. DLQ(Dead Letter Queue)의 보존 기간이 4일인 경우 메시지는 3일 후에 DLQ(Dead Letter Queue)에서 삭제되며 ApproximateAgeOfOldestMessage
는 3일입니다. 따라서 배달 못한 편지 대기열의 보존 기간을 항상 원래 대기열의 보존 기간보다 더 길게 설정하는 것이 좋습니다.
FIFO 대기열의 경우 메시지가 DLQ(Dead Letter Queue)로 이동하면 대기열에 추가 타임스탬프가 재설정됩니다. ApproximateAgeOfOldestMessage
지표는 메시지가 DLQ(Dead Letter Queue)로 이동한 시간을 나타냅니다. 위의 동일한 예에서 메시지는 4일 후에 배달 못한 편지 대기열에서 삭제되며 ApproximateAgeOfOldestMessage
는 4일입니다.