Amazon AWS SQS队列消息保留期

时间:2019-08-27 13:45:12

标签: amazon-web-services amazon-sqs

这是一个三部分的问题:

  1. 我知道SQS队列的邮件保留期限最多可以设置为14天。对于您是否还可以将周期缩短到较小的值,我找不到明确的答案。

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

    a。队列中有10条消息
    b。飞行中有2条消息

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

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

2 个答案:

答案 0 :(得分:3)

根据AWS文档here,消息的保留期限可以设置为1分钟至14天。

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

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

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

答案 1 :(得分:2)

要回答上述问题:

  1. 该时间段可以减少到较小的值,也可以延长到14天。

  2. 是的,这10条可见消息和2条运行中的消息将获得新的保留期。所有现有消息以及新消息都将具有新的保留期限,无论是较小的还是较大的。

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

  1. 在这种情况下,一旦新时间段最终从后端应用到队列,消息将被删除。

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

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

最好的问候