【问题标题】:Amazon SES messages to SNS and SQS optimizationAmazon SES 消息到 SNS 和 SQS 优化
【发布时间】:2017-08-22 17:58:23
【问题描述】:

我正在为一个项目使用 Amazon SES,并设置了一个接收规则以将消息从 SES 发送到 SNS。 SNS 将我的 API 端点作为订阅者,但为了确保我不会错过任何消息,我还设置了一个 SQS 队列并将队列订阅到 SNS 主题。

通过此设置,我每封 SES 电子邮件都会收到两次。 (一个来自 SNS,一个来自 SQS 的投票)。有没有办法只将失败的 SNS 消息发送到 SQS 队列,这样我就不必总是检查重复项?

向 SNS 发送 SES 消息的规则:

订阅 SNS 主题的 SQS 队列:

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-sqs amazon-sns


    【解决方案1】:

    根据您的设置,这是不可能的。但是您可以尝试其他方法。它可能会给您的应用程序带来复杂性,但值得一试。下面给出了一些方法。

    1. SES 到 SNS 并将所有消息从 SNS 发送到 SQS,并轮询 SQS 以获取消息。如果有些失败,则将它们放入 Deadletterqueue(类似于 SQS),并不时单独轮询该队列,以查找失败的消息。这使得消息更持久,但由于轮询而效率稍低。

    2. SES 到 SNS 并让 SNS 根据需要使用它的传递策略。您可以避免 SQS,并要求 SNS 查找 投递状态,如果失败则重试。您可以根据需要定义重试策略,它在this link 中给出。经过大量尝试后,该消息可以作为完全失败而被丢弃。您还可以将重试状态写入 AWS CloudWatch Logs。

    【讨论】:

      【解决方案2】:

      简短的回答,不。

      如果您已将 SQS 队列订阅到 SNS 主题,它将接收发布到后者的所有消息。 SNS 不知道您的 API 成功处理了哪些消息,因此无法选择性地发送到 SQS。

      【讨论】:

        猜你喜欢
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2013-07-25
        • 1970-01-01
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多