天天看点

AWS学习笔记:Amazon SQS

Amazon SQS 短轮询和长轮询

默认是短轮询(Short Polling)。像http一样,客户端请求,服务器端马上返回。

但是SQS服务器有多个,消息分布在各个服务器上。请求的时候,并不是查看所有服务器来确实是否有消息,而只是查看一部分服务器(采样),如果刚好消息不在所有查看的服务器上,会返回空响应(即使消息实际存在,实在存在于查看的服务器意外的服务器上)。

即使是空响应,也是收费的,AWS按查询次数收费。这样子很亏啊。

为了避免空响应和查询太频繁,可以通过长轮询(Long Polling)来减少空响应。

一方面长轮询会遍历所有服务器来避免消息遗漏,另一方面,如果查询时消息队列为空的话,会一直等到有消息或者timeout为止。

设定方法:

只要设定API(ReceiveMessage)操作的等待时间大于 0 时,长轮询就会自动起作用的了。长轮询最长等待时间为 20 秒。

参考

Amazon SQS 短轮询和长轮询https://docs.aws.amazon.com/zh_cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling

继续阅读