[디커플링 애플리케이션] Delay Queue, Long Polling

728x90

Delay Queue

  • 대기열 지연은 consumer 들이 메시지를 바로 보지 못하도록 메시지를 일부러 지연시키는 것을 뜻한다.
  • 최대 15분 까지 지연시킬 수 있고 기본값은 0초 이다.
  • 대기열 레벨에서 기본값으로 대기열 지연 시간을 지정하거나 매번 메시지를 보낼 때 마다 DelaySeconds 파라미터를 사용하여 메시지 별 지연 시간을 지정할 수 있다.
  • 즉, 대기열이 있고 consumer 가 그 대기열로 메시지를 보냈을 때 해당 메시지를 얼마나 지연시킬지에 대한 기본값을 가지고 있는 것이다.

Long Polling

  • consumer 가 대기열에 메시지를 요청하는데 대기열에 메시지가 없으면 메시지가 도착할 때 까지 기다리고 이를 Long Polling 이라고 부른다.
  • 롱 폴링을 하는 이유는 두가지이다.
    1. 지연 시간을 줄이기 위해서
    2. SQS 로 보내는 API 호출을 줄이기 위해서
  • 최대 20초 동안 폴링하는 consumer 가 있다. 대기열이 비어있다면 20초 동안 기다리겠다는 것, 20초 내에 메시지가 도착하면 consumer 는 해당 메시지를 폴링해간다. 만약 20초가 넘어도 메시지가 도착하지 않으면 다시 폴링하는 API 를 요청하게 된다.
  • 롱 폴링을 구성하는 방법은 두가지가 있다.
    1. 대기열 레벨에서 폴링하러 오는 consumer 들에게 롱 폴링을 활성화 시킨다.
    2. WaitTimeSeconds 를 지정하여 consumer 가 롱 폴링을 하도록 설정할 수 있다.
728x90