AWS SNS:多个订阅者的案例

时间:2017-06-04 23:59:18

标签: amazon-web-services notifications amazon-sns

我是使用AWS服务的初学者。我最近有一个要求,我想从服务1发送一些数据到服务2和服务3.所以,我想要做的是,我将从服务1和服务2和服务3推送通知到SNS将是此SNS主题的订阅者。因此,这是多个订阅者订阅相同主题的情况,并且两个订阅者都想要相同的数据。

我对AWS SNS的基本功能有一些疑问。如果有人可以提供帮助,那将非常有帮助。

  1. 说,有2个通知A,B推送到SNS主题,那么订阅者都会同时获得这两个通知吗?

  2. 对于同一场景,2个通知何时从SNS主题中删除?

  3. SNS会在某处存储通知吗?或者它只是将消息传递给订阅者?

  4. 如果其中一个订阅者失败并且无法获得某些通知,会发生什么?当它再次连接到SNS主题时它是否会收到这些通知,或者它不会得到那些?

  5. 请提供上述一些问题的答案。这些将真正帮助我理解SNS如何在内部工作。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

发送到SNS主题的消息将发送给所有订阅者。

  

发布商向主题发送消息。发布新消息后,Amazon SNS会尝试将该消息传递给订阅该主题的每个端点(强调添加)

     

http://docs.aws.amazon.com/sns/latest/dg/PublishTopic.html

消息实际上并未被删除"从一个主题(你可能会想到SQS)......但他们也不会坚持下去。它们已经发布,然后就不见了。

这个明显的例外 - retry policies - 并不是一个例外。在这种情况下,该消息已经发布,并且在概念上已经脱离了主题,但SNS仍然可以重新发送到特定目标。

SNS所做的一切都是推动。订阅者不会连接到SNS并要求发送消息。消息发布后,即已发布。没有未来的订阅者会看到旧消息,也没有订阅者会错过"它可以回来得到它。

但是...... SNS fanout可以向多个SQS队列发送消息。在这种情况下,您将队列订阅到主题,并使用队列中的消息。每个队列都获得每条消息的副本,每个队列中的一个消费者每当轮询SQS时都会收到一份副本。

SQS队列还可以提供良好的备份临时邮件保留位置。如果您将SNS消息发送到其他类型的端点(例如HTTPS或Lambda),您也可以将消息发送到SQS队列,但是在正常操作下,实际上不会轮询队列。 maximum message retention period后将自动从队列中清除邮件,默认为4天,但最多可配置为14天。如果主题订阅者出现任何问题并且消息丢失,您可以从此备份队列中检索它们,但是否则它们最终会在超时到期时自行消失。队列中可以等待,未读的消息数量没有限制。