클라이언트 측 버퍼링 및 요청 일괄 처리 활성화 - Amazon Simple Queue Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

클라이언트 측 버퍼링 및 요청 일괄 처리 활성화

AWS SDK for Java는 Amazon SQS에 액세스하는 AmazonSQSBufferedAsyncClient를 포함합니다. 이 클라이언트는 클라이언트 측 버퍼링을 사용하여 요청 일괄 처리를 간단하게 해줍니다. —즉 클라이언트에서 한 호출을 먼저 버퍼링한 후 배치 요청 형태로 Amazon SQS로 전송합니다.

클라이언트 측 버퍼링을 사용하면 최대 10개의 요청을 버퍼링하여 배치 요청으로 전송할 수 있으므로 사용 비용을 줄일 수 있습니다. Amazon SQS 전송 요청 수를 줄입니다. AmazonSQSBufferedAsyncClient 동기 호출과 비동기 호출을 모두 버퍼링합니다. 배치 처리된 요청과 긴 폴링 지원을 통해 처리량도 높일 수 있습니다. 자세한 정보는 수평적 조정과 작업 일괄 처리를 사용하여 처리량 증대 단원을 참조하십시오.

AmazonSQSBufferedAsyncClientAmazonSQSAsyncClient와 동일한 인터페이스를 구현하므로 AmazonSQSAsyncClient에서 AmazonSQSBufferedAsyncClient로 마이그레이션하려면 일반적으로 기존 코드를 최소한만 변경하면 됩니다.

참고

Amazon SQS Buffered Asynchronous Client현재는 FIFO 대기열을 지원하지 않습니다.

AmazonSQSBufferedAsyncClient 사용

시작하기 전에 Amazon SQS 설정의 단계를 완료해야 합니다.

중요

Java 2.x용 AWS SDK는 현재 AmazonSQSBufferedAsyncClient와 호환되지 않습니다.

AmazonSQSAsyncClient를 기반으로 새 AmazonSQSBufferedAsyncClient를 만들 수 있습니다. 예를 들면 다음과 같습니다.

// Create the basic Amazon SQS async client final AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); // Create the buffered client final AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync);

AmazonSQSBufferedAsyncClient를 만든 후 이것을 이용해서 Amazon SQS에 다중 요청을 보낼 수 있습니다(AmazonSQSAsyncClient와 같은 방법으로). 예를 들면 다음과 같습니다.

final CreateQueueRequest createRequest = new CreateQueueRequest().withQueueName("MyQueue"); final CreateQueueResult res = bufferedSqs.createQueue(createRequest); final SendMessageRequest request = new SendMessageRequest(); final String body = "Your message text" + System.currentTimeMillis(); request.setMessageBody( body ); request.setQueueUrl(res.getQueueUrl()); final SendMessageResult sendResult = bufferedSqs.sendMessageAsync(request); final ReceiveMessageRequest receiveRq = new ReceiveMessageRequest() .withMaxNumberOfMessages(1) .withQueueUrl(queueUrl); final ReceiveMessageResult rx = bufferedSqs.receiveMessage(receiveRq);

AmazonSQSBufferedAsyncClient 구성

AmazonSQSBufferedAsyncClient는 대부분의 사용 사례에 적용되는 설정으로 사전 구성됩니다. AmazonSQSBufferedAsyncClient를 추가로 구성할 수 있습니다. 예를 들면 다음과 같습니다.

  1. 필요한 구성 파라미터로 QueueBufferConfig 클래스의 인스턴스를 만듭니다.

  2. AmazonSQSBufferedAsyncClient 생성자에 인스턴스를 제공합니다.

// Create the basic Amazon SQS async client final AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); final QueueBufferConfig config = new QueueBufferConfig() .withMaxInflightReceiveBatches(5) .withMaxDoneReceiveBatches(15); // Create the buffered client final AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync, config);
QueueBufferConfig 구성 파라미터
파라미터: 기본값: "" 설명
longPoll true

longPolltrue로 설정된 경우 AmazonSQSBufferedAsyncClient는 메시지를 사용할 때 긴 폴링을 사용하려고 시도합니다.

longPollWaitTimeoutSeconds 20s

ReceiveMessage 호출이 서버에서 차단되고 빈 수신 결과를 반환하기 전에 메시지가 대기열에 나타나기까지 대기하는 최대 시간(초)입니다.

참고

긴 폴링을 비활성화하면 이 설정은 영향을 주지 않습니다.

maxBatchOpenMs 200ms

발신 호출이 동일한 유형의 메시지를 배치 처리할 다른 호출을 대기하는 최대 시간(밀리초)입니다.

설정이 높을수록 동일한 작업량을 수행하는 데 필요한 배치 수가 감소합니다(그러나 배치의 첫 번째 호출을 대기하는 시간이 길어짐).

이 파라미터를 0으로 설정하면, 제출된 요청은 다른 요청을 기다리지 않으므로 사실상 일괄 처리하지 않게 됩니다.

maxBatchSize 배치당 요청 10개

단일 요청에서 배치 방식으로 함께 처리되는 최대 메시지 수입니다. 설정이 높을수록 동일한 요청 수를 수행하는 데 필요한 배치 수가 감소합니다.

참고

배치당 요청 10개는 Amazon SQS에 허용되는 최대값입니다.

maxBatchSizeBytes 256KB

클라이언트가 Amazon SQS에 전송하려고 시도하는 메시지 배치의 최대 크기(바이트 단위)입니다.

참고

256KB는 Amazon SQS에 허용되는 최대값입니다.

maxDoneReceiveBatches 배치 10개

AmazonSQSBufferedAsyncClient가 클라이언트 측에서 미리 가져와서 저장하는 수신 배치의 최대 개수입니다.

설정이 높을수록 Amazon SQS에 호출을 전송하지 않고도 만족할 수 있는 수신 요청 개수가 늘어납니다(그러나 미리 가져오는 메시지가 많을수록 메시지가 버퍼에 있는 시간이 길어지므로, 제한 시간 초과가 만료될 수 있음).

참고

0은 모든 메시지 미리 가져오기 기능이 비활성화되고 메시지가 요청 시에만 사용됨을 나타냅니다.

maxInflightOutboundBatches 배치 5개

동시에 처리될 수 있는 활성 아웃바운드 배치의 최대 개수입니다.

설정이 높을수록 아웃바운드 배치 전송 속도가 빨라지고(CPU 또는 대역폭과 같은 할당량도 영향을 줌), AmazonSQSBufferedAsyncClient에서 사용하는 스레드 수가 많아집니다.

maxInflightReceiveBatches 배치 10개

동시에 처리될 수 있는 활성 수신 배치의 최대 개수입니다.

설정이 높을수록 수신 가능한 메시지가 많아지고(CPU 또는 대역폭과 같은 할당량도 영향을 줌), AmazonSQSBufferedAsyncClient에서 사용하는 스레드 수가 많아집니다.

참고

0은 모든 메시지 미리 가져오기 기능이 비활성화되고 메시지가 요청 시에만 사용됨을 나타냅니다.

visibilityTimeoutSeconds 1.

이 파라미터를 0이 아닌 양수 값으로 설정하면, 여기에 설정된 제한 시간 초과는 메시지가 사용되는 대기열에서 설정된 제한 시간 초과를 재정의합니다.

참고

-1은 대기열에서 기본 설정이 선택되어 있음을 나타냅니다.

제한 시간 초과를 0으로 설정할 수 없습니다.