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

时间:2017-12-19 08:17:17

标签: amazon-web-services amazon-sqs

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

可能会调整长/短轮询(它只会对处理一次产生任何影响吗?) 或visibilityTimeout秒, 或者对我的工人的申请采取一些最佳做法?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

请阅读有关SQS标准here

的更多信息

请阅读有关SQS FIFO here

的更多信息