AWS SQS(Simple Queue Service)는 Fully Managed Service로 서로 다른 시스템을 이벤트 방식으로 처리하기 위해 사용한다. 메시지를 생성하는 Producer, 데이터를 연결하는 브로커 Queue, 메시지를 가져가는 Consumer로 구성이 된다.

Producer는 최대 256kb의 메시지를 만들어 메시지 브로커인 SQS로 보낸다.

Consumer는 Long Polling 방식으로SQS로부터 메세지를 받아와 처리를하게 되는데 최대 10개까지만 받아 온다.

Untitled

메시지를 받아온 후 모든 처리를 했으면 받아온 메시지 id를 삭제하기 위해 메시지 id를 SQS로 전달한다.

Polling 후 삭제하기 전까지 다른 Consumer가 같은 메시지를 가져가지 못하게 하기 위해 해당 메시지는 SQS에서 Invisible상태가 된다. 처리를 완료한 후 Consumer 에서 삭제 요청을 보내면 처리가 완료된다.

주의해야 할 점은 삭제 요청이 오지 않아도 visibility timeout이 지나게 되면 visible 상태로 바뀐다. consumer에서 메시지를 처리하는 작업에 따라 적절한 visibility timeout을 설정해야 한다.

실패가 RedrivePolicy.maxReceiveCount만큼 반복되면 메시지는 DLQ(Dead-Letter Queue)로 옮겨진다.

SQS Type

AWS SQS는 두가지 타입의 큐를 제공하고 있다.

Untitled

Standard의 특징

FIFO의 특징