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

Is it possible to set up SQS standard queue to be sure to process only once my messages?

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

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

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

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

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

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

请详细了解 SQS 标准 here

请详细了解 SQS FIFO here