AWS SQS 消息保留期
Posted
技术标签:
【中文标题】AWS SQS 消息保留期【英文标题】:AWS SQS message retention period 【发布时间】:2018-02-11 07:51:21 【问题描述】:根据documentation,最长SQS 消息保留期(MessageRetentionPeriod
) 为14 天。在那之后,消息将从队列中删除。
SQS 有什么方法可以在保留期到期后不丢失这些消息?比如不清楚或者是否可以为此使用死信队列?
【问题讨论】:
我很好奇为什么这对你来说是个问题。消息队列通常不会在队列中保留消息数小时,更不用说几天了。 我有数百万个批处理任务,估计需要1-2个月,我还需要在14天后将消息排队! 【参考方案1】:14 天是您可以保留消息的最长期限。 14 天后,您可以将该消息移至 S3 存储桶进行备份。您还可以使用 DLQ 进行 hack。
这是一个快速技巧,您可以将消息发送回主队列。这绝对不是最佳或推荐的选择。
-
将主 SQS 队列设置为具有最大值的实际 DLQ 的 DLQ
接收为 1。
在 DLQ 中查看内容(这会将消息移动到主
队列,因为这是实际 DLQ 的 DLQ)
删除设置,使主队列不再是
实际 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/… 中所写的内容以上是关于AWS SQS 消息保留期的主要内容,如果未能解决你的问题,请参考以下文章