AWS SDK for Java 1.x는 2024년 7월 31일부터 유지 관리 모드로 전환되었으며 2025년 12월 end-of-support
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SQS에서 배달 못한 편지 대기열 사용
Amazon SQS는 배달 못한 편지 대기열을 지원합니다. 배달 못한 편지 대기열은 다른(소스) 대기열에서 성공적으로 처리할 수 없는 메시지를 보낼 수 있는 대기열입니다. 배달 못한 편지 대기열에서 이 메시지를 구분하고 격리하여 처리에 실패한 이유를 확인할 수 있습니다.
배달 못한 편지 대기열 생성
배달 못한 편지 대기열은 일반적인 대기열과 동일한 방식으로 생성되지만, 다음과 같은 제한이 수반됩니다.
-
배달 못한 편지 대기열은 소스 대기열과 동일한 유형의 대기열(FIFO 또는 표준)이어야 합니다.
-
데드레터 대기열은 소스 대기열과 동일한 AWS 계정 및 리전을 사용하여 생성해야 합니다.
두 가지 동일한 Amazon SQS 대기열을 생성하는 방법. 이 대기열 중 하나는 배달 못한 편지 대기열로 사용됩니다.
가져오기
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException;
코드
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Create source queue try { sqs.createQueue(src_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } } // Create dead-letter queue try { sqs.createQueue(dl_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }
GitHub의 전체 예제
배달 못한 편지 대기열 하나를 소스 대기열로 지정
배달 못한 편지 대기열을 지정하려면 먼저 리드라이브 정책을 생성하고 나서 대기열의 속성에서 해당 정책을 설정해야 합니다. 리드라이브 정책은 JSON에 명시되어 있으며, 배달 못한 편지 대기열의 ARN과 배달 못한 편지 대기열로 전송되기 전에 메시지를 수신하여 처리하지 못한 최대 횟수를 지정합니다.
소스 대기열에 대한 재구동 정책을 설정하려면 JSON 재구동 정책으로 RedrivePolicy
속성을 설정한 SetQueueAttributesRequest 객체를 사용하여 AmazonSQS 클래스의 setQueueAttributes
메서드를 호출하세요.
가져오기
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest; import com.amazonaws.services.sqs.model.GetQueueAttributesResult; import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
코드
String dl_queue_url = sqs.getQueueUrl(dl_queue_name) .getQueueUrl(); GetQueueAttributesResult queue_attrs = sqs.getQueueAttributes( new GetQueueAttributesRequest(dl_queue_url) .withAttributeNames("QueueArn")); String dl_queue_arn = queue_attrs.getAttributes().get("QueueArn"); // Set dead letter queue with redrive policy on source queue. String src_queue_url = sqs.getQueueUrl(src_queue_name) .getQueueUrl(); SetQueueAttributesRequest request = new SetQueueAttributesRequest() .withQueueUrl(src_queue_url) .addAttributesEntry("RedrivePolicy", "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\"" + dl_queue_arn + "\"}"); sqs.setQueueAttributes(request);
GitHub의 전체 예제
추가 정보
-
Amazon SQS 개발자 안내서의 Amazon SQS 데드레터 대기열 사용
-
Amazon SQS API 참조에서 SetQueueAttributes