Amazon SNS - 是否可以在发布后订阅并仍然收到消息?

Amazon SNS - is it possible to subscribe after publication and still get the message?

我知道通常 SNS 是一种 Pub-Sub 机制,"duplicates"向所有订阅已发布主题的消费者发送消息。

尽管如此,我在 SNS API 中看到了一个字段 "TTL",它定义了消息的到期时间(自消息创建后的秒数)。

我想知道:如果我向主题 T 发布了一条有效期为 5 分钟的消息,并且在 2 分钟后,消费者订阅了主题 T - 消费者会收到消息吗?

我不是 100% 确定这个答案。

当您向 SNS 发布消息时,SNS 将重新尝试发送消息,直至达到当前订阅者的 TTL。一个示例是发送 SMS 消息但运营商已关闭或发送电子邮件消息但 SMTP 服务器返回错误。 SNS 不会在该时间间隔内向新订阅者发送消息。

注意:我不会将 TTL 设置为较短的值,例如 5 分钟。

简单地说,没有。

这是我刚试过的

  1. 创建了一个话题
  2. 订阅了我的 phone 个号码
  3. 发布了一条 TTL 为 3600s 的消息(立即收到消息)
  4. 订阅了我的第二个 phone
  5. 发布了另一条 TTL 为 3600 秒的消息

两个phone都收到了第二条消息。第一条消息没有发送到第二条消息 phone(即使我在第一条消息 TTL 内很好地订阅了它,但在它发布之后)。

没有。如果您在消息发布到 SNS 主题后订阅,您将不会收到消息。这是因为 SNS 不会保留过去通过它发送的任何消息。

因此,一旦发布了一条消息,它将传递给当前订阅者,但不会通过 SNS 存储在未来订阅者的历史记录中。

SNS 会在消息提交后尝试将消息传递给当前的订阅者列表。任何新添加的订阅者都不会收到过去提交的消息。