[AWS] SQS

SQS

Reference : Amazon SQS

SQS : Simple Queue Service
Amazon SQS 는 메시지 대기열 서비스를 제공한다.

SQS

Table of Contents

Message Queues

메시지 대기열 | 消息队列 | メッセージキュー
서버리스 또는 마이크로 서비스 아키텍처에 사용되는 비동기식 서비스.

메시지 대기열은 버퍼엔드포인트 기능을 제공해준다.

메시지는 Producer 에서 생성되어 Queue 를 거쳐 Consumer 에 도착한다.

Amazon SQS

메시지 전송 과정

생산자(producer)가 메시지를 대기열(queue)에 추가해 놓는다.
소비자(consumer)는 메시지를 검색하여 특정 작업을 수행하기 전까지 대기열(queue)에 저장해 놓는다.

Retention period

메시지는 처리되고 삭제되기 전까지 대기열에 저장된다.
통상적인 메시지 유지 기간은 4일 이다.
사용자가 설정 가능한 유지 기간은 최소 60초 최대 1,209,600초(14 일) 이다.

이동 중인 메시지

저장된 메시지 수에는 할당량이 없지만, 이동중인 메시지 수에는 할당량이 있다.

SQS 메시지는 세 가지 상태로 분류할 수 있다.

  1. 전송
    생산자가 대기열로 메시지를 전송한 상태
  2. 수신
    소비자가 대기열에서 메시지를 수신한 상태
  3. 삭제
    메시지가 대기열에서 삭제된 상태

위의 세 가지 상태 외에도 중간과정에 속하는 상태가 존재한다.

↑ return to TOC

Types of Message Queues

SQS 가 제공하는 대기열은 두가지가 있다.

  1. Standard Queues
  2. FIFO Queues
    FIFO : First-in-First-Out

Standard Queues 표준 대기열

기본으로 설정되어 있는 타입. 처리량은 무제한이다.
모든 리전에서 사용 가능.

FIFO Queues

모든 리전에서 사용 가능한 표준 대기열과 다르게 FIFO 대기열은 일부분의 리전에서만 사용 가능하다.
초당 최대 3000개라는 높은 메시지 처리량을 지원한다.

2020년 4월 현재 FIFO Queue 를 사용할 수 있는 리전은 아래와 같다.

↑ return to TOC

SQS Visibility Timeout

SQS 제한 시간

Visibility Timeout

SQS는 메시지를 삭제해 주지 않는다. 그 이유는 SQS가 분산 시스템이기 때문에 소비자가 메시지를 실질적으로 언제 성공적으로 받았는지 확인할 길이 없기 때문이다. 그리하여 사용자는 수동으로 메시지 삭제 처리를 해 주어야 한다.

만약 삭제해 주지 않는다면 해당 메시지는 계속 대기열에 남아 있게 된다.
대기열에 남아있는 메시지를 타 소비자가 접근할 수 없도록 해야한다. 이 때에 사용되는 것이 바로 ‘제한 시간(Visibility Timeout)’이다.

여기서 주의할 점은 Visibility Timeout 이 메시지의 ‘중복 수신 방지’를 보장하지는 않는다는 것이다.

↑ return to TOC