본문 바로가기
Infra/AWS

[SQS] Visibility Timeout

by devson 2023. 2. 4.

Consumer가 Queue에서 메세지를 consume 하고 처리를 한 뒤, 해당 메세지를 acknowledge(delete)를 하기 전까지는 메세지는 Queue에 계속 남아있는다.

 

특정 Consumer가 메세지를 consume 하고 모든 처리가 끝날 때까지 다른 Consumer에서 동일 메세지를 consume하는 것을 막기위해서 SQS에서는 Visibility Timeout을 설정한다.

메세지가 consume 된 뒤에 다른 Consumer에게 다시 보여지기 위한 시간이라고 생각하면 될 것이다.

(하지만 이는 메세지가 두 번 전달되는 것을 막기 위함은 아니다)

 

기본값은 30초이며, 0초~12시간 까지 설정 가능하다.

 

 

관련하여 메세지 수의 제한을 확인해야하는데, 제한을 확인하기 전에 짧게 메세지의 상태에 대해 알아보도록 하자.

SQS의 메세지는 기본적인 라이프 사이클에 맞춰 3가지 상태를 갖고 있다.

1. Producer로부터 보내진 상태

2. Queue에서 Consumer로부터 consume이 된 상태

3. Queue에서 삭제된 상태

 

메세지가 위와 같은 상태를 가질 때

Consumer로부터 consume 되기 전의 Queue에 저장되있는(상태 1-2 사이) 메세지 수는 제한이 없으나,

Consumer로부터 consume 되어 다른 Consumer에게 보이지않는invisible(상태 2-3 사이, in flight 상태라고도한다) 메세지의 수는 120,000 개로 제한이 있다.

(FIFO Queue의 경우 20,000 개)


참고

 

댓글