[aws] SQS

📝 1yangsh·2021년 3월 15일
0

aws fundamentals

목록 보기
7/8

SQS

Simple Queue Service

  • Queue

    • 메시지를 담는 공간
    • 리전 별로 생성해야 함
    • HTTP 프로토콜을 이용해서 다른 리전끼리 메시지를 주고 받을 수 있음
    • 큐 이름은 모든 리전에서 유일해야 함
    • 큐에 담을 수 있는 메시지의 개수는 무제한
    • 연속해서 30일 동안 아무 요청이 발생하지 않으면 AWS가 큐를 삭제
    • 같은 리전 안에서의 데이터 전송은 무료
    • 다른 리전에 있는 인스턴스와 메시지를 주고 받으면 데이터 요금이 과금
  • Message

    • XML 또는 JSON 형태
    • 최대 256KB
    • 유니코드 문자 사용 가능
    • 초 단위로 보관 기간 설정이 가능
    • 고유한 ID가 부여됨
    • 3~4KB의 메시지도 256KB로 책정 (과금)
      • 용량이 작은 메시지를 처리하는 것 보다는 메시지를 모아서 Batch API로 처리하는 것이 요금 효율적
  • Batch API

    • 한번에 최대 10개의 메시지(최대 256KB)를 동시에 처리

SQS Delay Queue

  • Visibility timeout
    • 메시지를 받은 뒤 특정 시간 동안 다른 곳에서 동일한 메시지를 다시 꺼내 볼 수 있게 또는 없게 하는 기능
    • 큐 하나에 여러 서버에 메시지를 받을 때 동일한 메시지를 동시에 처리하는 것을 방지
    • Message Avaliable (Visible)
      • ⇒ 메시지를 꺼내서 볼 수 있는 상태의 메시지 개수
    • Message in Fight (Not Visible)
      • ⇒ 다른 곳에서 메시지를 보고 있어 현재 볼 수 없는 메시지의 개수

  • Delay Delivery
    • 특정 시간 동안 메시지를 맏지 못하게 하는 기능
    • 지연되는 시간 동안에는 Message in Fight에 포함
  • Dead Letter Queue
    • 일반적으로 메시지를 받고 작업이 완료되면 메시지를 삭제
    • 설정한 횟수를 초과하여 메시지를 받았는데 삭제되지 않고 남아 있으면 처리 실패 큐로 보냄
    • 일반 큐 하나에 여러 처리 실패 큐를 연결할 수 있으며, 일반 큐와 처리 실패 큐는 같은 리전에 있어야 함
  • Short Polling
    • 메시지 받기 요청을 하면 결과를 바로 받음
    • 메시지가 있으면 메시지를 가져오고 없으면 빠져 나옴
    • ReceiveMessage 요청에서WaitTimeSeconds를 0으로 했을 때
    • Queue 설정의 ReceiveMessageWaitTimeSeconds를 0으로 했을 때
  • Long Poling
    • 메시지가 있으면 바로 가져오고 없으면 올 때까지 기다림
    • 1초부터 20초까지 설정이 가능 (기본은 20초)
    • ReceiveMessage 요청에서 WaitTimeSeconds를 0보다 크면 큐 설정의 ReceiveMessageWaitTimeSeconds 값 보다 우선으로 처리
profile
개발 경험 저장소

0개의 댓글