I.T/AWS 기초
람다 SQS 폴링
윤관리인
2019. 1. 17. 10:25
aws-serverless-sqs-event-source - 버전
퍼옴 : https://github.com/awslabs/aws-serverless-sqs-event-source/tree/1.0.0
람다 > 함수 > 함수 생성 > 구성 및 배포 > AWS Serverless 애플리케이션 저장소 조회
AWS Serverless SQS 이벤트 소스
이 서버리스 앱은 주기적으로 주어진 SQS 대기열을 폴링하고 주어진 람다 함수를 호출하여 메시지를 처리합니다. 응용 프로그램은 SQS 대기열과의 모든 상호 작용을 처리하고 메시지가 성공적으로 처리되었거나 다시 시도되어야하는지 (구성 가능한 재시도 지연 포함) 나타 내기 위해 람다 함수에 대한 간단한 인터페이스를 제공합니다.
건축물
- SQSPoller 람다 함수는 CloudWatch 이벤트 규칙에 의해 1 분마다 트리거됩니다.
- 대기열에서 메시지를 받으면 SQSPoller는 메시지 배치를 처리하기 위해 MessageProcessor lambda 함수 (응용 프로그램을 배포 할 때 제공됨)를 호출합니다.
- MessageProcessor 함수는 메시지 처리 결과를 나타내는 응답을 반환해야합니다. 처리 결과에 따라 SQSPoller는 큐에서 메시지를 삭제하거나 메시지 가시성을 변경하여 나중에 재 시도합니다.
설치 단계
- AWS 계정이 없다면 AWS 계정을 생성 하고 로그인하십시오.
- Serverless 응용 프로그램 저장소의 응용 프로그램 페이지로 이동하여 "배포"를 클릭하십시오.
- 필수 앱 매개 변수를 입력하고 계정에 앱을 배포하십시오.
매개 변수
앱에 필요한 매개 변수는 다음과 같습니다.
- MessageQueueName (필수) - 폴링 할 대기열의 이름입니다.
- MessageQueueUrl (필수) - 폴링 할 대기열의 URL입니다.
- MessageProcessorFunctionName (필수) - 큐에서 메시지를 처리하기 위해 호출해야하는 람다 함수의 이름입니다. 이 이름은 함수 이름이어야하며 함수 ARN이 아니어야합니다. 함수가 동일한 지역에 있고 앱과 동일한 계정에서 소유하고 있다고 가정합니다.
- SQSPollerMemorySize (선택 사항) - SQSPoller 람다 함수의 메모리 크기입니다. 이것은 당신이 특히 큰 메시지를 가지고 있고 기본 메모리 크기가 충분하다고 생각하지 않는 경우의 매개 변수입니다. 기본값 : 512.
MessageProcessor
이 앱을 사용하려면 사용자가 메시지 처리를 위해 메시지 프로세서 람다 함수를 제공해야합니다. 메시지 프로세서는 SQS 메시지 객체 목록을 수신하며 다음과 같은 형식으로 메시지 처리 결과 목록을 반환합니다.
{
"messageResults": [
{
"messageId": "processingSuccessExample",
"status": "SUCCESS"
},
{
"messageId": "processingErrorExample",
"status": "ERROR"
},
{
"messageId": "processingRetryExample",
"status": "RETRY",
"retryDelayInSeconds": 60
}
]
}
지원되는 상태 값은 다음과 같습니다.
SUCCESS
- 메시지가 성공적으로 처리되었음을 나타냅니다. 이 경우, SQSPoller는이를 큐에서 제거합니다.ERROR
-이 메시지를 처리하는 중에 오류가 발생했음을 나타냅니다. 이 경우 SQSPoller는 가시성을 변경하여 5 초 후에 재 시도합니다.RETRY
- 메시지 프로세서가 일정 시간이 지나면 메시지를 다시 시도하기를 원함을 나타냅니다. 경우retryDelayInSeconds
지정이 시간의 양을 재 시도 있도록 SQSPoller는 메시지의 가시성을 변경합니다. 재시도 지연을 지정하지 않으면 기본 재시도 지연 시간 인 10 초가 사용됩니다.
aws-serverless-sqs-event-source-java-messageprocessor
이 저장소에는 또한이 앱과 상호 작용할 수있는 Java 기반 메시지 프로세서 람다 함수를 쉽게 작성할 수있게 해주는 maven 편의 라이브러리가 포함되어 있습니다.
라이센스 요약
이 샘플 코드는 수정 된 MIT 라이센스하에 제공됩니다. LICENSE 파일을 참조하십시오.