곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다
Amazon SQS의 제한 시간 초과 관리
이 Node.js 코드 예제는 다음을 보여 줍니다.
대기열에서 수신된 메시지를 볼 수 없는 시간 간격을 지정하는 방법
시나리오
이 예제에서는 Node.js 모듈을 사용하여 제한 시간 초과를 관리합니다. Node.js 모듈은 SDK for JavaScript로 AWS.SQS
클라이언트 클래스의 다음 메서드를 사용하여 제한 시간 초과를 관리합니다.
Amazon SQS 가시성 제한 시간에 대한 자세한 정보는 Amazon Simple Queue Service 개발자 안내서의 제한 시간 초과를 참조하세요.
사전 필수 작업
이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.
Node.js를 설치합니다. Node.js 설치에 대한 자세한 내용은 Node.js 웹 사이트
를 참조하세요. 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드 섹션을 참조하세요.
Amazon SQS 대기열을 생성합니다. 대기열 생성에 대한 예제는 Amazon SQS에서 대기열 사용 섹션을 참조하세요.
대기열로 메시지를 전송합니다. 대기열로 메시지를 전송하는 방법에 대한 예제는 Amazon SQS에서 메시지 전송 및 수신 섹션을 참조하세요.
제한 시간 초과 변경
파일 이름이 sqs_changingvisibility.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. Amazon Simple Queue Service에 액세스하려면 AWS.SQS
서비스 객체를 생성합니다. 대기열에서 메시지를 검색합니다.
대기열에서 메시지를 수신하면 메시지가 포함된 대기열의 URL, 메시지를 수신할 때 반환된 ReceiptHandle
, 새 제한 시간(초)을 포함하여 제한 시간을 설정하기 위해 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. changeMessageVisibility
메서드를 호출합니다.
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region to us-west-2
AWS.config.update({ region: "us-west-2" });
// Create the SQS service object
var sqs = new AWS.SQS({ apiVersion: "2012-11-05" });
var queueURL = "https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME";
var params = {
AttributeNames: ["SentTimestamp"],
MaxNumberOfMessages: 1,
MessageAttributeNames: ["All"],
QueueUrl: queueURL,
};
sqs.receiveMessage(params, function (err, data) {
if (err) {
console.log("Receive Error", err);
} else {
// Make sure we have a message
if (data.Messages != null) {
var visibilityParams = {
QueueUrl: queueURL,
ReceiptHandle: data.Messages[0].ReceiptHandle,
VisibilityTimeout: 20, // 20 second timeout
};
sqs.changeMessageVisibility(visibilityParams, function (err, data) {
if (err) {
console.log("Delete Error", err);
} else {
console.log("Timeout Changed", data);
}
});
} else {
console.log("No messages to change");
}
}
});
예제를 실행하려면 명령줄에서 다음을 입력합니다.
node sqs_changingvisibility.js
이 샘플 코드는 GitHub