Amazon AWS SQS 队列消息保留期

Amazon AWS SQS queue message retention period

这是一个由 3 部分组成的问题:

  1. 我了解到 SQS 队列的消息保留期最长可以设置为 14 天。关于您是否也可以将周期减少回较小的值,我找不到明确的答案。

  2. 考虑队列(原始保留期为 4 天)在我将消息保留期设置为 14 天的那一刻有以下消息:

    一个。队列中有 10 条消息
    b. 2 条消息正在发送

    这个新设置的保留期将如何应用于这些消息?已经在队列中的 10 条消息在 4 天后是否仍会被删除,还是它们也会保留 14 天?
    如果发送中的 2 条消息返回到队列(再次可见),它们会从队列中首次收到后保留 14 天吗?

  3. 如果队列当前的保留期是14天,队列中有一条消息已经存在了5天。现在,如果我将保留期缩短为 4 天,此消息会发生什么情况?

根据 AWS 文档 here 消息的保留期可以设置为 1 分钟到 14 天之间。

在我解决主要问题之前,正在处理的消息是队列消费者已经收到但尚未收到并且已经在处理中的消息。对队列本身的更改应该不会影响已经在传输中的消息,因为从技术上讲它们不再可见。

关于更新队列配置。当您更新 SQS 队列的保留策略时,队列中已存在的消息将保留添加这些消息时存在的队列保留策略,新消息将接收从该点开始生效的保留策略。

在上面的第 2 点中,如果队列中有 10 条保留期为 4 天的消息,并且将队列更新为 14 天,则现有消息将保留 4 天保留政策,而新消息将应用 14 天保留政策。对于上面的第 3 点,同样的原则适用于以其他方式调整队列时。如果您有一些具有 14 天保留策略的消息,并且将队列策略更改为 4 天,则在保留策略为 14 天时添加到队列中的消息将保留 14 天保留策略,并且新消息将收到4 天保留政策。

回答以上问题:

  1. 周期可以减少回一个较小的值,也可以进一步增加到 14 天。

  2. 是的,10 条可见消息和 2 条动态消息将获得新的保留期。所有现有消息和新消息都将具有新的保留期,无论是更短还是更长。

请注意,新的保留期最多可能需要 15 分钟才能应用于队列。[ https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html ]

  1. 在这种情况下,一旦新周期最终从后端应用到队列,消息就会被删除。

@hephalump 的回答是基于持续时间短于 15 分钟的测试,因此,他们可能给出不一致的结果。但是,根据上述 public 文档,更改最多可能需要 15 分钟才能真正应用于队列。

我已经测试(3-4 次)它的保留时间超过 15 分钟,并在发布前确认了我的答案。

此致