Amazon SQS中的轮询期间消息发生了什么?

时间:2020-08-02 05:45:18

标签: java amazon-web-services amazon-sqs

当我浏览此Amazon SQS Document时 我发现了

The queue (which holds messages A through E) redundantly stores the messages across multiple Amazon SQS servers.

enter image description here

所以,我的问题是,当我从SQS轮询Message A时,此Message A是否来自单个服务器?那么,存储在不同服务器中的消息发生了什么?消费者在处理后删除邮件时,它们如何保持不可见直到可见的超时或被删除?

1 个答案:

答案 0 :(得分:3)

无论何时与AWS服务进行交互,您都只会触摸一台服务器进行API交互(尽管与队列存在的服务器不是同一台服务器,它只是前端API)。

为了了解幕后发生的事情,您只能推测,但是根据其他服务的工作方式,服务将尝试从队列中获取项目,同时更新项目的可见性。这将并行发送到包含排队项目的所有节点。然后将这些退还给您。

看一下文档,下面说明了

标准队列支持至少一次消息传递。但是,有时(由于高度分布式的体系结构允许近乎无限的吞吐量),可能会无序地传递多个消息副本。

从这一行开始,它声明为at-least once,表示在所述期间内总是有可能多次传递消息。