SQS는 Send message (producer)와 Receive message (consumer)가 분리되어있다.
Receive count가 2인 이유는, consumer가 메시지를 받은 후에 processing을 정해진 시간 (polling duration) 안에 해야되는데
그걸 안해가지고 다시 queue로 돌아온거다.
그럼 정상 작동 하게 하는 방법은 뭘까?
바로 delete를 하는거다.
Queue에서 message가 delete가 되면, 메시지가 정상적으로 처리되었음을 의미하기 때문이다.
번외)
Purge는 Queue에 있는 모든 메시지를 삭제하는거다.
개발 환경에서는 아주 도움이 될거고, 프로덕션 환경에서는 쓰면 안된다. ㅎ
Consumer가 polling을 하면 일정 시간(30초)동안은 다른 consumer가 해당 message를 읽을 수 없다.
30초안에 해당 메시지가 처리되지 않으면, 해당 메시지는 다른 consumer들이 다시 읽을 수 있다.
만약에 consumer가 message를 처리할만한 충분한 시간이 없다면, ChangeMessageVisibility API를 호출해야한다.
Q) 그럼 동시에 여러 consumer가 message를 받을 수는 없나봄? 구조상.
큐에 아무것도 없을 때, consumer가 메시지가 도착할 때까지 기다릴 수 있는데
이걸 Long Polling이라고 부른다.
Q) LongPolling이 효율성을 증대시키고 애플리케이션 레이턴시를 줄이면서 SQS에 대한 API 호출의 수를 줄인대.
-> 이게 무슨 소리인지 이해가 안가네?
LongPolling 하는게 어떻게 API 호출의 수를 줄여?
short polling은 메시지가 있으면 바로 큐에서 메시지 가져오는거고, 없으면 빠져나오는거
long polling은 메시지가 있으면 바로 큐에서 메시지 가져오는거고, 큐에서 메시지 없으면 도착할 때까지 일정 시간 기다리는거
-> 그러면 short polling은 메시지가 없으면 무조건 empty response를 받는거네.
http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter28
Short Polling과 Long Polling이 이해가 안갔다...
https://lannstark.tistory.com/86
음 SQS 아키텍처를 좀 봐야 이해가 가겠다.
졸라 대충 나와있네...
메시지를 받았을 때, scalability와 durability를 위해서 분산 저장을 하는건 알겠어.
그러면 consumer가 queue에서 message 처리하면, 모든 서버에서 해당 메시지가 싹 사라지는거야?
내가 polling의 개념을 모르는 것 같다.
'CLOUD > AWS Cloud' 카테고리의 다른 글
ENI는 AZ에 종속적이다. (0) | 2022.10.22 |
---|---|
Udemy AWS SAA-C03 [Decoupling applications: SQS, SNS, Kinesis, Active MQ] (0) | 2022.10.22 |
cloudformation으로 배포할 때, iam role (policy)이 안맞으면? (0) | 2022.10.20 |
EC2 hibernate와 spot instance (0) | 2022.10.20 |
[펌] AWS Aurora 도입전에 알아야 할 몇가지 사실 (RDS&Aurora 비교) (0) | 2022.10.10 |
최근댓글