我是亚马逊网络服务新手,目前正试图了解简单队列服务(SQS)的工作原理。
在链接ReceiveMessage中提到以下内容:
短轮询是一种加权随机集的默认行为 在ReceiveMessage调用上对机器进行采样。这意味着只有 返回采样机器上的消息。如果数量 队列中的消息很小(小于1000),很可能你会 获得的消息少于每个ReceiveMessage调用请求的消息数。如果 队列中的消息数量非常少,您可能不会 接收特定ReceiveMessage响应中的任何消息;在其中 你应该重复这个请求。
据我所知,有一个队列,许多机器/实例可以读取消息。我不清楚“加权随机机器组”是什么意思?多台机器上有多个队列吗?显然,我对SQS的工作缺乏一些了解。
答案 0 :(得分:1)
我认为这意味着因为SQS在地理上是分布式的,并非所有机器(亚马逊的服务器都有你的队列)都会始终拥有完全相同的队列内容,因为它们并不总是与每个机器同步其他时刻。
您不知道或控制将从哪个服务器服务器发送消息,它会使用算法来确定在您请求消息时向您发送的消息。这就是为什么当你提出要求时你并不总是收到消息,偶尔也会不止一次地提供相同的消息;您需要确保处理所需的任何内容,它可以处理它正在处理已由您的另一台工作机器处理的内容的可能性。