Amazon SQS에서 데드레터 대기열 사용 - Amazon Simple Queue Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS에서 데드레터 대기열 사용

Amazon SQS는 소스 대기열이 성공적으로 처리되지 않은 메시지를 대상으로 지정할 수 있는 데드레터 대기열 (DLQ) 을 지원합니다. DLQ는 사용되지 않은 메시지를 분리하여 처리가 실패한 이유를 확인할 수 있기 때문에 애플리케이션을 디버깅하는 데 유용합니다. 최적의 성능을 위해서는 소스 대기열과 DLQ를 동일한 지역 내에 유지하는 것이 가장 좋습니다. AWS 계정 메시지가 데드레터 대기열에 들어가면 다음과 같은 작업을 수행할 수 있습니다.

데드레터 큐로 구성하려면 먼저 새 큐를 만들어야 합니다. Amazon SQS 콘솔을 사용하여 DLQ(Dead Letter Queue)를 구성하는 방법에 대한 자세한 내용은 Amazon SQS 콘솔을 사용하여 데드레터 대기열을 구성하는 방법을 알아보십시오. 섹션을 참조하세요. 데드레터 큐로 이동된 메시지에 대한 경보를 구성하는 방법 등 데드레터 큐에 대한 도움이 필요하면 을 참조하십시오. Amazon을 사용하여 데드레터 대기열에 대한 알람 생성 CloudWatch

데드레터 대기열에 대한 정책 사용

리드라이브 정책을 사용하여 지정합니다. maxReceiveCount maxReceiveCount데드레터 대기열로 이동하기 전에 소비자가 소스 대기열로부터 메시지를 수신할 수 있는 횟수입니다. 예를 들어 를 1과 maxReceiveCount 같이 낮은 값으로 설정하면 메시지를 한 번 수신하지 못하면 메시지가 데드레터 대기열로 이동하게 됩니다. 시스템이 오류에 대해 복원력을 갖도록 하려면 충분한 재시도를 허용할 수 있을 정도로 maxReceiveCount를 높게 설정하세요.

리드라이브 허용 정책은 DLQ(Dead Letter Queue)에 액세스할 수 있는 소스 대기열을 지정합니다. 모든 소스 대기열을 허용할지, 특정 소스 대기열을 허용할지 또는 데드레터 대기열의 모든 소스 대기열 사용을 거부할지 선택할 수 있습니다. 기본값에서는 모든 소스 대기열에서 데드레터 대기열을 사용할 수 있습니다. byQueue옵션을 사용하여 특정 대기열을 허용하도록 선택한 경우 소스 대기열 Amazon Resource Name (ARN) 을 사용하여 소스 대기열을 최대 10개까지 지정할 수 있습니다. denyAll을 지정하는 경우, 대기열을 DLQ(Dead Letter Queue)로 사용할 수 없습니다.

데드레터 대기열의 메시지 보존 기간 이해

표준 대기열의 경우, 메시지 만료는 항상 메시지가 원래 대기열에 추가된 타임스탬프를 기준으로 합니다. 메시지가 DLQ(Dead Letter Queue)로 이동하면 대기열에 추가 타임스탬프는 변경되지 않습니다. ApproximateAgeOfOldestMessage지표는 메시지가 처음 전송된 시기가 아니라 메시지가 데드레터 대기열로 이동한 시기를 나타냅니다. 예를 들어, 메시지가 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일입니다.