【问题标题】:HOW to keep AWS SQS messages permanently?如何永久保留 AWS SQS 消息?
【发布时间】:2022-08-24 07:41:00
【问题描述】:

目的:我创建了一个 SQS 队列,希望将不良数据存储到死信队列中。我的目标是将 SQS 连接到 SNS,以便订阅者可以收到有关存储在死信队列中的不良数据的通知。

但是,我现在了解到,由于 SQS 的保留期,数据不能通过 SQS 永久存储。我也了解 SNS 以 PUSH 而不是 PULL 着称,因此它无法接收 SQS 消息并将这些消息通过电子邮件发送给订阅者

所以,我的问题是,有什么方法可以永久保留来自 SQS 的消息?我的目标是将这些消息安全地存储在某个地方以备将来使用。我还研究了将消息存储到 S3 中。

  • 好吧,S3 或 DynamoDB 或任何持久性存储都应该可以工作。但你似乎已经知道了。这里有一个特别的问题吗?
  • 如果您想从 SQS 中提取并发布到 SNS,请参阅 here
  • @jarmod 谢谢!我一直对如何将这些 sqs 消息发送到 s3 感到困惑。谷歌搜索后,我也有点困惑。所以,我想在这里确认这是否是可能的解决方案。另外,我会试试你发送的链接
  • 没有将消息从 SQS 移动到 S3 afaik 的 AWS 原生功能,但如果我正确阅读了您的问题,听起来您的消息可能根本不在 SQS 中。那正确吗?它们在其他地方,但您正在考虑将它们发送到 SQS 以保持持久性,但这不会起作用,所以现在您正在考虑将它们发送到 SQS,然后从那里发送到 S3 或通过 SNS 发送到订阅者。是的,你可以很容易地做到这两点,但你也可以直接从它们当前所在的任何地方(在你的应用程序中?)将它们发送到 S3,当你检测到它们不好时。
  • @jarmod 好的,这很有趣!我的消息目前仅在 SQS 中,但是我正在尝试将消息移动到某处(S3 或 SNS)。我的目标是将 S3 或 SNS 通知视为死信队列。

标签: amazon-web-services aws-lambda pipeline amazon-sqs amazon-sns


【解决方案1】:

您可以通过在其前面添加一个具有附加订阅的 SNS 主题来永久保留发送到 SQS 队列的所有消息。这将是一个 Kinesis Data Firehose 订阅,其中配置了一个 S3 存储桶作为其目标。

这样,任何发布到 SNS 主题的消息都会同时发送到 S3 存储桶和 SQS 队列。您的 SQS DLQ 将像往常一样以相同的方式工作,并且您可以为客户端提供一种方式,以便在以后查询来自 S3 存储桶的失败消息(可能比 SQS 允许的最大保留策略晚得多)。

有关更多信息,请参阅以下链接:

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2021-08-10
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多