본문 바로가기

Back-end/AWS

[AWS] SQS

AWS SQS란?

 

SQSSimple 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