Amazon SQS에서 표시 제한 시간 설정
Amazon SQS에서 메시지가 수신되면 수신 여부를 확인하기 위해 삭제될 때까지 대기열에 남아 있습니다. 수신되었지만 삭제되지 않은 메시지는 메시지가 처리 및 삭제되기 전에 두 번 이상 수신되지 않도록 하기 위해 지정된 제한 시간 초과 이후에는 후속 요청에서 제공됩니다.
표준 대기열을 사용 중인 경우 제한 시간 초과를 설정해도 메시지가 두 번 이상 수신되지 않는다고 장담할 수 없습니다. 표준 대기열을 사용 중인 경우 동일 메시지가 두 번 이상 전달된 경우를 코드에서 처리할 수 있도록 해야 합니다.
사전 조건
시작하기 전에 AWS SDK for C++ 사용 시작하기를 읽어보시기 바랍니다.
예제 코드를 다운로드하고 코드 예제 시작하기에 설명된 대로 솔루션을 빌드합니다.
예제를 실행하려면 코드가 요청을 수행하는 데 사용하는 사용자 프로필이 AWS에서 적절한 권한(서비스 및 동작에 대한)을 보유하고 있어야 합니다. 자세한 내용은 AWS 자격 증명 제공을 참조하세요.
메시지 수신 시 메시지 표시 제한 시간 설정
메시지를 수신한 후에는 SQSClient 클래스의 ChangeMessageVisibility 멤버 함수에 전달되는 ChangeMessageVisibilityRequest에 해당 수신 핸들을 전달하여 표시 제한 시간을 수정할 수 있습니다.
포함 파일
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/ChangeMessageVisibilityRequest.h> #include <aws/sqs/model/ReceiveMessageRequest.h> #include <iostream>
코드
Aws::SQS::Model::ChangeMessageVisibilityRequest request; request.SetQueueUrl(queue_url); request.SetReceiptHandle(messageReceiptHandle); request.SetVisibilityTimeout(visibilityTimeoutSeconds); auto outcome = sqsClient.ChangeMessageVisibility(request); if (outcome.IsSuccess()) { std::cout << "Successfully changed visibility of message " << messageReceiptHandle << " from queue " << queue_url << std::endl; } else { std::cout << "Error changing visibility of message from queue " << queue_url << ": " << outcome.GetError().GetMessage() << std::endl; }
전체 예제
추가 정보
-
Amazon Simple Queue Service 개발자 안내서의 표시 제한 시간
-
Amazon Simple Queue Service API 참조의 SetQueueAttributes
-
Amazon Simple Queue Service API 참조의 GetQueueAttributes
-
Amazon Simple Queue Service API 참조의 ReceiveMessage
-
Amazon Simple Queue Service API 참조의 ChangeMessageVisibility
-
Amazon Simple Queue Service API 참조의 ChangeMessageVisibilityBatch