1

我是 Amazon Web Services 的新手,目前正在尝试了解简单队列服务 (SQS) 的工作原理。

ReceiveMessage链接中提到了以下内容:

短轮询是在 ReceiveMessage 调用中对一组加权随机机器进行采样的默认行为。这意味着只返回采样机器上的消息。如果队列中的消息数量很少(少于 1000 条),那么您收到的消息可能会少于每次 ReceiveMessage 调用请求的消息。如果队列中的消息数量非常少,您可能不会在特定的 ReceiveMessage 响应中收到任何消息;在这种情况下,您应该重复请求。

据我了解,有一个队列,许多机器/实例可以读取消息。我不清楚“加权随机机器集”是什么意思?多台机器上是否有多个队列?显然,我对 SQS 作品缺乏一些了解。

4

1 回答 1

1

我相信这意味着因为 SQS 是地理分布的,并不是所有的机器(亚马逊的服务器有你的队列)在任何时候都会有完全相同的队列内容,因为它们不会总是彼此同步立即的。

您不知道或控制它将从哪个亚马逊服务器提供消息,它使用一种算法来确定在您请求时将哪些消息发送给您。这就是为什么当您请求消息时您并不总是收到消息,而且有时同一条消息会被多次发送;你需要确保无论你的处理需要什么,它都可以处理它正在处理的东西已经被你的另一台工作机器处理过的东西的可能性。

于 2013-05-06T21:56:08.273 回答