728x90
- 대략적인 SQS가 Lambda를 호출하는 구성도
- 이를 바탕으로 SQS에서 메시지를 읽어들이는 코드(Node.js 기반)를 작성
- QueueUrl은 이전에 생성한 SQS의 url을 넣어줌
- AWS의 Console에서 결과를 확인
const AWS = require("aws-sdk");
const sqs = new AWS.SQS();
const lambda = new AWS.Lambda();
exports.handler = (event, context, callback) => {
const params = {
QueueUrl: 'https://sqs.ap-northeast-2.amazonaws.com/XXXXXX/MyFirstQueue',
MaxNumberOfMessages: 10,
MessageAttributeNames: ['All']
};
//SQS의 receiveMessage는 큐에 포함된 메시지를 1~10개까지 반환
sqs.receiveMessage(params).promise()
.then((data) => {
if (data.Messages && data.Messages.length > 0) {
// 큐에 데이터가 있을시 람다를 통해 데이터를 처리(DB에 저장할지 파일로 저장할지 등등)
}
})
.then(() => {
//성공시 콜백함수 호출
callback();
})
.catch((err) => {
//실패시 콜백함수 호출
callback(err);
});
};
SQS의 receiveMessage는 큐에 포함된 메시지를 1~10개까지 반환하고, 반환되는 메시지는 아래와 같은 내용을 포함함
- Message body
- Message body의 MD5 digest
- 메시지 전송시 사용된 MessageId
- Receipt handle. message삭제시 identifier로 사용됩니다.
- Message attributes.
- Message attributes의 MD5 digest
- 반환되는 메시지 관련 참고자료https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property
728x90
'AWS' 카테고리의 다른 글
AWS 요금 폭탄 피하기 (0) | 2023.01.31 |
---|---|
(Amazon AWS ELB 관련) 로드 밸런싱이란 (2) | 2022.10.01 |
Docker 로그보는 방법(log) (0) | 2022.03.09 |