SQS를 사용하여 NodeJs 마이크로서비스 간에 통신하는 방법
4481 단어 nodejavascriptsqsaws
SQS 표준 대기열은 동일한 메시지를 여러 번 보낼 수 있습니다. 따라서 Amazon SQS에 중복 메시지가 있을 가능성이 있습니다. SQS 설정 및 코딩을 시작하기 전에 이해해야 할 몇 가지 용어가 있습니다.
AWS에서 SQS 대기열을 생성하는 것부터 시작하겠습니다. AWS 콘솔을 열고 SQS를 검색합니다. 저는 뭄바이(ap-south-1) 지역을 사용하고 있습니다.

대기열 만들기를 클릭합니다.

SQS 설정에는 이름, 구성 및 액세스 정책이 필요합니다. 이 세가지는 필수사항이고 나머지는 선택사항입니다. 배달 못한 편지 큐는 실패를 처리하는 데 도움이 되지만 이 블로그의 범위를 벗어납니다. 우리는 표준 대기열을 사용할 것입니다. 액세스 정책을 기본으로 유지하십시오.

화면 하단의 대기열 만들기 버튼을 클릭합니다.

다음 화면에서 나중에 필요할 세부 정보 섹션에 대기열 URL이 표시됩니다.

대기열 설정이 완료되면 코딩으로 이동할 수 있습니다. SQS 메시지 읽기, 쓰기, 삭제 권한과 로그 스트림, 로그 그룹 생성 및 로그 이벤트 추가 권한이 있는 IAM 사용자의 비밀 액세스 키와 액세스 키가 필요합니다. 나중에 디버깅에 사용할 수 있도록 CloudWatch에 로그를 저장하려면 로그 권한이 필요합니다. aws-sdk npm 패키지를 설치합니다.
npm install aws-sdk
이제 메시지를 보내거나 받기 위해 sqs를 초기화해야 합니다. QueueUrl은 대기열 생성 후 받은 URL입니다.const AWS = require('aws-sdk');
const sqs = new AWS.SQS({
accessKeyId: 'IAM user access key',
secretAccessKey: 'IAM user secret key',
region: 'region where you created queue(like ap-south-1)',
apiVersion: '2012-11-05',
});
//parameter to send message
const paramsSendMessage = {
MessageBody: JSON.stringify({
type: 'event-live-status',
}),
QueueUrl: 'url of queue we created',
};
//param to receive message
const paramsReceiveMessage = {
QueueUrl: 'url of queue we created',
};
SQS sendMessage 함수는 대기열에서 메시지를 보내는 데 사용합니다.
sqs.sendMessage(params, (err, data) => {
if (err) {
console.log('Error', err);
} else {
console.log('Successfully added message', data.MessageId);
}
});
AWS SQS는 폴링을 사용하여 대기열에서 메시지를 읽습니다. 구성에서 ReceiveMessageWaitTimeSeconds가 0으로 설정되었거나 WaitTimeSeconds를 0으로 추가했거나 매개변수에 WaitTimeSeconds 속성이 없는 경우
//param to receive message
const paramsReceiveMessage = {
QueueUrl: 'url of queue we created',
WaitTimeSeconds: 0,
};
sqs.receiveMessage(params, (err, data) => {
if (err) {
console.log(err);
} else if (!data.Messages) {
console.log('no message found');
} else {
/*
we sent the message as json string so json parse the message body
*/
const messageBody = JSON.parse(data.Messages[0].Body);
}
});
nodejs 서버가 실행 중이면 대기열에서 메시지 읽기를 계속 시도합니다. 구성에 따라 짧은 폴링 또는 긴 폴링을 사용합니다.

참고: IAM 사용자에게 SQS 대기열에서 메시지 쓰기, 읽기, 삭제 권한이 있는지, 대기열 URL이 올바른지 확인하십시오. 대기열에서 중복 메시지를 수신할 가능성이 매우 높습니다. 메시지를 받는 즉시 삭제하면 중복 메시지를 피할 수 있습니다.
또한 AWS Lambda 함수를 사용하여 대기열에서 메시지를 읽고 메시지를 기반으로 작업을 수행할 수 있습니다. 다음 블로그에 포함하겠습니다.
Reference
이 문제에 관하여(SQS를 사용하여 NodeJs 마이크로서비스 간에 통신하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amitiwary999/how-to-use-amazon-sqs-with-nodejs-4cah텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)