Amazon SQS에서 메시지 전송 및 수신 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

Amazon SQS에서 메시지 전송 및 수신

JavaScript code example that applies to Node.js execution

이 Node.js 코드 예제는 다음을 보여 줍니다.

  • 대기열에 있는 메시지를 전송하는 방법.

  • 대기열에 있는 메시지를 수신하는 방법.

  • 대기열에 있는 메시지를 삭제하는 방법.

시나리오

이 예제에서는 일련의 Node.js 모듈을 사용하여 메시지를 전송하고 수신합니다. Node.js 모듈은 SDK for JavaScript로 AWS.SQS 클라이언트 클래스의 다음 메서드를 사용하여 메시지를 전송하고 수신합니다.

Amazon SQS 메시지에 대한 자세한 내용은 Amazon Simple Queue Service 개발자 안내서Amazon SQS 대기열로 메시지 전송Amazon SQS 대기열에서 메시지 수신 및 삭제를 참조하세요.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

대기열로 메시지 전송

파일 이름이 sqs_sendmessage.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. Amazon SQS에 액세스하려면 AWS.SQS 서비스 객체를 생성합니다. 이 메시지를 전송하려는 대기열의 URL을 포함하여 메시지에 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서 메시지는 제목, 저자, 목록에 속해 있는 기간(주)을 포함하여 소설 베스트셀러 목록에 있는 책에 대한 세부 정보를 제공합니다.

sendMessage 메서드를 호출합니다. 콜백에서 메시지의 고유 ID가 반환됩니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { // Remove DelaySeconds parameter and value for FIFO queues DelaySeconds: 10, MessageAttributes: { Title: { DataType: "String", StringValue: "The Whistler", }, Author: { DataType: "String", StringValue: "John Grisham", }, WeeksOn: { DataType: "Number", StringValue: "6", }, }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL", }; sqs.sendMessage(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.MessageId); } });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sqs_sendmessage.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

대기열에서 메시지 수신 및 삭제

파일 이름이 sqs_receivemessage.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. Amazon SQS에 액세스하려면 AWS.SQS 서비스 객체를 생성합니다. 메시지를 수신하려는 대기열의 URL을 포함하여 메시지에 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서 파라미터는 모든 메시지 속성의 수신 및 10개 이하의 메시지 수신을 지정합니다.

receiveMessage 메서드를 호출합니다. 콜백에서 나중에 해당 메시지를 삭제하기 위해 사용하는 각 메시지의 ReceiptHandle을 검색할 수 있는 Message 객체의 배열이 반환됩니다. 메시지를 삭제하는 데 필요한 파라미터를 포함하는 또 다른 JSON 객체를 생성합니다. 이 파라미터는 대기열의 URL 및 ReceiptHandle 값입니다. deleteMessage 메서드를 호출하여 수신한 메시지를 삭제합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "SQS_QUEUE_URL"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Receive Error", err); } else if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, }; sqs.deleteMessage(deleteParams, function (err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Message Deleted", data); } }); } });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sqs_receivemessage.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.