【问题标题】:Amazon AWS SQS queue message retention periodAmazon AWS SQS 队列消息保留期
【发布时间】:2019-12-31 17:12:40
【问题描述】:

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

  1. 我了解 SQS 队列的消息保留期最长可设置为 14 天。我无法找到一个明确的答案,您是否也可以将时间段缩短回较小的值。

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

    一个。队列中有 10 条消息
    湾。 2 条消息在飞行中

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

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

【问题讨论】:

    标签: amazon-web-services amazon-sqs


    【解决方案1】:

    回答以上问题:

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

    2. 是的,10 条可见消息和 2 条正在发送的消息将获得新的保留期。所有现有消息和新消息都将具有新的保留期,无论是更小还是更大。

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

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

    @hephalump 的答案基于持续时间少于 15 分钟的测试,因此,它们可能给出不一致的结果。但是,根据上述公共文档,更改可能需要长达 15 分钟才能真正应用于队列。

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

    最好的问候

    【讨论】:

    • 我已经通过 AWS 支持验证了这一点。 @Yash 是对的。
    【解决方案2】:

    根据 AWS Docs here,消息的保留期可以设置为 1 分钟到 14 天。

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

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

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

    【讨论】:

    • 很高兴知道!您是否找到包含此信息的参考页面 - 如果有,您可以链接它吗?
    • @JohnRotenstein,如果可以,我会在回复中发布参考。在这种情况下,我无法找到任何参考资料,我的回答是基于我们使用的 SQS FIFO 队列的经验,再加上我在之前用更短的时间框架(4 分钟和 14 分钟)进行的一些验证测试发布了我的回复。
    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 2013-10-17
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2018-08-29
    • 2014-10-10
    相关资源
    最近更新 更多