곧 출시될 end-of-support AWS SDK for Java (v1) 버전을 발표했습니다
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SQS 메시지 대기열에 대한 긴 폴링 활성화
Amazon SQS는 기본적으로 짧은 폴링을 사용하여 서버의 하위 세트(가중치 기반 무작위 배포 기반)만을 쿼리하여 응답에 포함할 메시지를 사용할지 여부를 결정합니다.
긴 폴링은 Amazon SQS 대기열로 전송된 ReceiveMessage 요청에 대한 응답으로 반환할 수 있는 메시지가 없을 때 빈 응답 수를 줄이고 거짓 빈 응답을 제거하여 Amazon SQS 사용 시 드는 비용을 줄여줍니다.
참고
긴 폴링 빈도는 1–20초로 설정할 수 있습니다.
대기열 생성 시 긴 폴링 활성화
Amazon SQS 대기열을 생성할 때 긴 폴링을 활성화하려면 AmazonSQS 클래스의 createQueue
메서드를 호출하기 전에 CreateQueueRequest 객체에 ReceiveMessageWaitTimeSeconds
속성을 설정하세요.
가져오기
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException; import com.amazonaws.services.sqs.model.CreateQueueRequest;
코드
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Enable long polling when creating a queue CreateQueueRequest create_request = new CreateQueueRequest() .withQueueName(queue_name) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); try { sqs.createQueue(create_request); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }
GitHub의 전체 예제
기존 대기열에 대해 긴 폴링 활성화
대기열을 생성할 때 긴 폴링을 활성화하는 것 외에도, AmazonSQS 클래스의 setQueueAttributes
메서드를 호출하기 전에 SetQueueAttributesRequest에 ReceiveMessageWaitTimeSeconds
를 설정하여 기존 대기열에서 긴 폴링을 활성화할 수도 있습니다.
가져오기
import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
코드
SetQueueAttributesRequest set_attrs_request = new SetQueueAttributesRequest() .withQueueUrl(queue_url) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); sqs.setQueueAttributes(set_attrs_request);
GitHub의 전체 예제
메시지 수신 시 긴 폴링 활성화
AmazonSQS 클래스의 receiveMessage
메서드에 제공하는 ReceiveMessageRequest에서 대기 시간을 초 단위로 설정하여 메시지 수신 시 긴 폴링을 활성화할 수 있습니다.
참고
AWS 클라이언트의 요청 제한 시간이 최대 긴 폴링 시간(20초)보다 길어야만 다음 폴링 이벤트까지 기다리는 동안 receiveMessage
요청의 제한 시간이 초과되지 않습니다.
가져오기
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
코드
ReceiveMessageRequest receive_request = new ReceiveMessageRequest() .withQueueUrl(queue_url) .withWaitTimeSeconds(20); sqs.receiveMessage(receive_request);
GitHub의 전체 예제
추가 정보
-
Amazon SQS 개발자 안내서의 Amazon SQS키 정책
-
Amazon SQS API 참조에서 CreateQueue
-
Amazon SQS API 참조에서 ReceiveMessage
-
Amazon SQS API 참조에서 SetQueueAttributes