Amazon支持对可用消息的两种轮询模式:短轮询和长轮询。对于长轮询,使用者指定等待可用消息的超时时间为1-20秒。
根据文档
默认情况下,Amazon使用短轮询,只查询其服务器的一个子集(基于加权随机分布),以确定是否有任何消息可用于响应。长时间轮询具有以下好处:
ReceiveMessage
请求的响应至少包含一条可用消息,以ReceiveMessage
操作中指定的最大消息数为限。上述特性使得长时间轮询看起来相当不错。那么,是否有这样一种情况,即短时间轮询更可取?
特别是对于高吞吐量队列,短轮询比长轮询快吗?
发布于 2018-07-23 11:01:04
长投票几乎总是比短投票更可取。以下是两种可能需要短轮询的用例(在SQS常见问题中给出):
来自SQS 常见问题
几乎在所有情况下,Amazon长轮询都比短轮询更好,长轮询请求允许队列使用者在到达队列时立即接收消息,同时减少返回的空ReceiveMessageResponse实例的数量。 在大多数用例中,Amazon长轮询以降低成本的方式提高了性能。但是,如果您的应用程序期望ReceiveMessage调用立即响应,您可能无法利用长轮询而不对应用程序进行一些修改。 例如,如果应用程序使用单个线程轮询多个队列,则从短轮询切换到长轮询可能不起作用,因为单个线程将等待任何空队列上的长轮询超时,从而延迟对任何可能包含消息的队列的处理。 在这样的应用程序中,使用单个线程只处理一个队列是一种很好的做法,允许应用程序利用Amazon长轮询提供的好处。
https://stackoverflow.com/questions/51475944
复制相似问题