AWS SQS란?
SQS는 Simple Queue Service의 약자입니다.
애플리케이션 간의 메시지를 전달하기 위한 아주 '간단한' Queue 라고 생각하면 됩니다.
홈페이지 설명에 따르면, 지속성이 우수하고 사용 가능한 보안 호스팅 대기열을 제공하며, dead-letter queue, 표준 대기열, FIFO 대기열을 지원하고 있습니다.
SQS와 MQ의 차이점
SQS는 이름 그대로 '간단한' 큐 서비스입니다. 다른 MQ에 존재하는 message routing, fan-out, distribution lists를 지원하지 않습니다. 메시지 생산자가 만들어낸 메시지를 메시지 소비자가 가져갈 수 있게 해주는 것이 전부입니다.
Amazon MQ는 AMQ나 MQTT처럼 표준화된 여러 broadcast 프토토콜을 완벽히 지원하는 fully managed 서비스입니다.
복잡한 요구사항을 구현할 때 유용하며, AWS 외부에 있는 메시지 브로커를 AWS 마이그레이션 할 때 유용합니다.
SQS 총 정리
SQS는 애플리케이션 간의 비동기 처리를 할 수 있게 도와주는 Queue로 표준형과 FIFO형이 있습니다.
또한 DLQ는 내부적으로 암호화를 할 수도 있습니다.
스프링에서 SQS를 사용하려면 Amazon SDK를 바로 쓸 수도 있고 아니면 wrapping된 spring-cloud-aws를 사용할 수도 있습니다.
spring-cloud-aws에서 SQS로 메시지를 쏘고 받는 법 모두 살펴봤으며, @SqsListner를 사용해 메세지를 받을 때 생각해야할 멀티스레딩 관련 몇 가지도 확인해봤습니다.
간단 용어 정리
- 메시지: SQS의 기본 데이터 단위
- 큐: 메시지를 담는 공간
region별로 생성해야 하며 HTTP 프로토콜을 이용하여 다른 region끼리 메시지를 주고 받을 수 있다.
Queue의 이름은 모든 region에서 유일해야 한다. - 보기 제한 시간(Visibility Timeout): 메시지를 받은 뒤 특정 시간 동안 동일한 메시지를 다른 곳에서 꺼내 볼 수 없도록 하는 제한 시간
- 지연 전송: 특정 시간 동안 메시지를 받지 못하게 하는 기능
- 짧은 폴링(short polling): 메시지 받기 요청을 하면 결과를 바로 받는다. 메시지가 있으면 메시지를 가져오고 없으면 그냥 빠져 나온다.
- 긴 폴링(long polling): 메시지가 있으면 바로 가져오고, 메시지가 없으면 메세지가 올 때까지 기다린다. 메시지가 계속 오지 않으면 긴 폴링 제한 시간까지 기다린다.
참고: https://lannstark.tistory.com/88?category=840827
'Back-end > AWS' 카테고리의 다른 글
[AWS] Athena (0) | 2022.03.13 |
---|---|
[AWS] SNS (0) | 2022.03.07 |
[AWS] ElastiCache(Redis) (0) | 2022.03.06 |
[AWS] EC2 배포 (0) | 2021.11.23 |
[AWS] EBS(Elastic Block Store) (0) | 2021.11.23 |