【问题标题】:AWS SNS with SQS subscriber durability具有 SQS 订阅者持久性的 AWS SNS
【发布时间】:2019-01-08 23:17:09
【问题描述】:

SNS documentation FAQ's 说:

SNS 为其接收到的所有消息提供持久存储。收到发布请求后,SNS 在向发送者确认收到请求之前,会在多个可用区中存储消息的多个副本(到磁盘)。每个 AWS 区域都有多个独立的位置,称为可用区。虽然很少见,但如果某个区域发生故障,SNS 的操作和您的消息的持久性将继续而不会中断。

如果成功处理所有已发布消息至关重要,则开发人员应将通知传递到 SQS 队列(除了通过其他传输的通知)。

我在理论上很好奇,有没有人知道会导致 SNS 接受消息的任何条件(即 API 以成功代码响应,导致消费者相信消息已被成功接受) “丢失”,特别是在使用订阅队列的 SQS 消费者时,即消息不会(也永远不会)传递给 SQS 订阅者。

脚注:大约一个月前,我确实在server fault 上问过同样的问题,但遗憾的是没有得到任何关注。如果问题的框架很糟糕,最好知道我可以如何改进它。

【问题讨论】:

  • 听起来您想知道在 SNS 和 SQS 之间是否会丢失消息。如果您已设置订阅,则由 AWS 负责处理从 SNS 到 SQS 的传输。我从未听说过有消息丢失,而且我认为您必须询问 AWS 支持以获得明确的答案,如果此时消息甚至有可能丢失。话虽如此,我确信 AWS 已经为使订阅正常工作投入了很多心思。
  • 我找到了一些文档;让这成为一个答案。

标签: messaging amazon-sqs amazon-sns


【解决方案1】:

亚马逊是否保证在从 SNS 到 SQS 的传输过程中不会丢失任何消息?

如果您使用 AWS 内置订阅功能(而不是编写自己的代码来传输消息),答案是——所有消息都将成功传送到 SQS。

问:Amazon SNS 是否保证将消息传送到订阅的终端节点?

... 如果成功处理所有已发布消息至关重要,则开发人员应将通知传递到 SQS 队列(除了通过其他传输的通知)。

来源:Amazon SNS FAQ

这里的含义是您应该将通知传递到 SQS 队列因为这是确保所有消息都得到处理的唯一保证方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-31
    • 2021-11-25
    • 2021-03-25
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多