[SQS] Long Polling & Short Polling

2021. 7. 27. 23:01DevOps/AWS

 

Usecase

 

자사의 메세지 큐를 AWS의 SQS로 대체하려는 서비스 회사가 있다고 가정합니다. 이 회사가 SQS로의 마이그레이션을 고려할 때 가장 중요하게 생각하는 요소가 '비용'이라고 할 때, 고려할 수 있는 옵션은 어떤 것이 있나요?

 

 

Short Polling

기본적으로 SQS(Simple Queue Service)는 대기열에서 메세지를 수신하기 위해 Short Polling을 사용합니다. Short Polling의 경우 SQS로 보내는 쿼리(ReceiveMessage)에 메세지가 없는 경우에도 즉시 응답을 전송하며, SQS서버의 부분 집합(Weighted Random Distribution Method를 통해 선정한 전체 서버 노드들의 일부)에서 메세지를 꺼내어 Response를 리턴합니다.  

 

 

따라서 특정 쿼리에 대해 모든 노드의 메세지들이 돌아오지 않을 수 있으며, Weighted Random Distribution을 통해 다음 응답의 노드를 선정하므로, 해당 쿼리에 응답하지 않은 노드들은 다음 쿼리에 조금 더 높은 가중치를 가지고 응답하게 됩니다. 

 

Short Polling Method

 

 

 

Long Polling

Long Polling은 ReceiveMessage API의 응답 시간을 0보다 크게 설정함으로써 작동시킬 수 있습니다. 메세지 큐에 대기하고 있는 메세지들이 없어도 쿼리에 응답하는 Short Polling과는 다르게, Long Polling은 응답할 메세지가 없는 경우에는 바로 응답하지 않고, 큐에 메세지가 들어올때까지 기다렸다가 응답을 하게 됩니다. Receive Message Wait Time만큼 기다렸다가, 적어도 하나 이상의 메세지를 가지고 응답하게 됩니다. 

 

Receive message wait time이 0보다 크므로 long polling이 동작하게 됩니다.

 

 

Reference

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html

 

Amazon SQS short and long polling - Amazon Simple Queue Service

Amazon SQS short and long polling Amazon SQS provides short polling and long polling to receive messages from a queue. By default, queues use short polling. With short polling, the ReceiveMessage request queries only a subset of the servers (based on a wei

docs.aws.amazon.com

 

반응형