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

곧 출시될 end-of-support AWS SDK for Java (v1) 버전을 발표했습니다. AWS SDK for Java V2로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

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

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

추가 정보