当我浏览此Amazon SQS Document时 我发现了
The queue (which holds messages A through E) redundantly stores the messages across multiple Amazon SQS servers.
所以,我的问题是,当我从SQS轮询Message A
时,此Message A
是否来自单个服务器?那么,存储在不同服务器中的消息发生了什么?消费者在处理后删除邮件时,它们如何保持不可见直到可见的超时或被删除?
答案 0 :(得分:3)
无论何时与AWS服务进行交互,您都只会触摸一台服务器进行API交互(尽管与队列存在的服务器不是同一台服务器,它只是前端API)。
为了了解幕后发生的事情,您只能推测,但是根据其他服务的工作方式,服务将尝试从队列中获取项目,同时更新项目的可见性。这将并行发送到包含排队项目的所有节点。然后将这些退还给您。
看一下文档,下面说明了
标准队列支持至少一次消息传递。但是,有时(由于高度分布式的体系结构允许近乎无限的吞吐量),可能会无序地传递多个消息副本。
从这一行开始,它声明为at-least once
,表示在所述期间内总是有可能多次传递消息。