是否可以设置SQS标准队列以确保只处理一次我的消息?

问题描述 投票:0回答:1

是否可以在AWS上设置我的SQS队列,以便只处理一次我的消息?

也许调整长/短轮询(它只会对处理一次有什么影响?)或visibilityTimeout秒,或者对我的工作人员的应用程序采取一些最佳实践?

或者我应该明确地移动到FIFO队列,以确保我只授予一次处理?

amazon-web-services amazon-sqs
1个回答
0
投票

SQS肯定会至少处理一次消息,但有机会不止一次处理消息。假设您的可见性超时为30秒,并且消费者花了35秒来处理该消息,那么该消息将再次在队列中用于其他进程。如果您没有重复消息的问题并且期望高吞吐量,那么SQS标准将是正确的选择。即使您使用短轮询或长轮询进行调整,也无法保证您可以避免使用SQS标准进行重复。

如果您只需要处理一次消息,并且如果您严格不需要任何重复,那么FIFO将是正确的选择。请记住,FIFO的吞吐量不会像SQS标准那么高。 FIFO队列每秒最多可支持300条消息

FIFO队列旨在永远不会引入重复的消息。但是,您的消息生产者可能会在某些情况下引入重复项:例如,如果生产者发送消息,则不会收到响应,然后重新发送相同的消息。 Amazon SQS API提供重复数据删除功能,可防止邮件生成者发送重复项。消息生成器引入的任何重复项都将在5分钟的重复数据删除间隔内删除。

请阅读有关SQS标准here的更多信息

请阅读有关SQS FIFO here的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.