【问题标题】:AWS SQS message retention periodAWS SQS 消息保留期
【发布时间】:2018-02-11 07:51:21
【问题描述】:

根据documentation,最长SQS 消息保留期(MessageRetentionPeriod) 为14 天。在那之后,消息将从队列中删除。

SQS 有什么方法可以在保留期到期后不丢失这些消息?比如不清楚或者是否可以为此使用死信队列?

【问题讨论】:

  • 我很好奇为什么这对你来说是个问题。消息队列通常不会在队列中保留消息数小时,更不用说几天了。
  • 我有数百万个批处理任务,估计需要1-2个月,我还需要在14天后将消息排队!

标签: amazon-web-services amazon-sqs


【解决方案1】:

14 天是您可以保留消息的最长期限。 14 天后,您可以将该消息移至 S3 存储桶进行备份。您还可以使用 DLQ 进行 hack。

这是一个快速技巧,您可以将消息发送回主队列。这绝对不是最佳或推荐的选择。

  1. 将主 SQS 队列设置为具有最大值的实际 DLQ 的 DLQ 接收为 1。
  2. 在 DLQ 中查看内容(这会将消息移动到主 队列,因为这是实际 DLQ 的 DLQ)
  3. 删除设置,使主队列不再是 实际 DLQ

【讨论】:

  • 感谢您的回答。还有一个问题 - S3 Bucket 将以什么形式备份消息?这是一个自动过程吗?
  • 不,它不是自动的,您必须使用 Cli 来自动化并将消息从 SQS 移动到 S3
  • 但是来自 AWS 文档的 AFAIK,这些消息将被删除,那么在保留期到期后如何备份它们?
  • @alexanoid 您可以使用轮询的 Lambda 函数来检查 DLQ 并将数据备份到 S3 存储桶中。
  • 这将如何增加保留期?以下是 AWS 文档 The expiration of a message is always based on its original enqueue timestamp. When a message is moved to a dead-letter queue, the enqueue timestamp remains unchanged. For example, if a message spends 1 day in the original queue before being moved to a dead-letter queue, and the retention period of the dl queue is set to 4 days, the message is deleted from the dl queue after 3 days. . source - docs.aws.amazon.com/AWSSimpleQueueService/latest/… 中所写的内容
猜你喜欢
  • 2019-12-31
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多