重复的 SQS 消息可以保留多长时间?



我在应用程序中使用 SQS 队列。为了处理重复项,我将队列项中的唯一 ID 存储在 DynamoDB 表中。然后对于每个项目,我首先检查它是否存在。

我应该将这些 ID 在 DynamoDB 表中保留多长时间? 即,一旦一个项目被处理,该项目的副本在多长时间后才有可能从 SQS 到达?

谢谢

据我所知,没有记录的时间框架。不过,这应该只是几秒钟的问题。

SQS 中有两种模式 - 标准队列和 FIFO。
让我们进一步假设消费者删除了已处理的消息(如果您没有它,那么这是您首先需要的(。

FIFO 队列未传送重复项。标准队列可能有重复项。由于您有重复项,让我们进一步了解标准队列。

标准队列使用最终一致性,同时提供高性能。
假设我们使用最终一致的方法,当没有重复时,我们不能要求具体时间。

如果您需要强大的一致性和具体的数字,请使用FIFO队列。

从标准队列中删除消息后,您可以假设您不会再看到它。因此,从理论上讲,重复的威胁会一直存在,直到消息从队列中删除为止......错误、成功完成或手动删除。

也就是说,如果您设置了重新驱动策略以在可见性超时过期后重试错误消息,则可能不希望将这些重试视为重复项。因此,您不仅要存储消息的唯一 ID,还要存储其状态。

最新更新