Amazon SQS에서 배달 못한 편지 대기열 사용 - AWS SDK for Java 1.x

AWS SDK for Java 1.x는 2024년 7월 31일부터 유지 관리 모드로 전환되었으며 2025년 12월 end-of-support31일에 출시될 예정입니다. 새 기능, 가용성 개선 사항 및 AWS SDK for Java 2.x보안 업데이트를 계속 받으려면 로 마이그레이션하는 것이 좋습니다.

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

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의 전체 예제를 참조하십시오.

추가 정보